Array of TBitmap

di il
2 risposte

Array of TBitmap

Ciao,

se ho capito bene, un'Array of Bitmap richiede per ogni bitmap:
ArrayBitmap[i] := TBitmap.Create;
Ora, quando l'array non serve più, è sufficiente SetLength(ArrayBitmap) per liberarsene delle bitmap create?

Chiedo perché con il solo SetLength(ArrayBitmap) l'applicativo funziona correttamente, mentre da errore se esegue:
if Length(ArrayBitmap) > 0 then
  begin
    for i := High(ArrayBitmap) downto Low(ArrayBitmap) do
      ArrayBitmap[i].Free;
    SetLength(ArrayBitmap, 0);
  end;
Ale

2 Risposte

  • Re: Array of TBitmap

    al.delphi ha scritto:


    Ora, quando l'array non serve più, è sufficiente SetLength(ArrayBitmap) per liberarsene delle bitmap create?
    No, trattandosi di un array di puntatori a oggetti TBitmap, è necessario creare gli oggetti e pertanto eseguire anche la Free al termine del loro utilizzo.

    In caso contrario, se viene ridimensionato l'array a zero, si perdono i riferimenti ai bitmap creati e non sarà più possibile deallocarli.

    Se si verifica un errore, questo potrebbe essere dovuto ad altre cause esterne (non essendo presente tutto il codice, non saprei determinare qual è, anche perché non è stato indicato il tipo di errore).

    Ciao!
  • Re: Array of TBitmap

    Grazie per la risposta e conferma, Marco. Ho quindi nuovamente inserito il codice sopra indicato e ora funziona.
    Tale codice viene eseguito prima di popolare l'array di bitmap e onClose del form, a sua volta aperto con showmodal.

    Inizialmente, il clear dell'array onClose dava Access Violation.

    Ale
Devi accedere o registrarti per scrivere nel forum
2 risposte