Avatar billede skovjuul Nybegynder
22. juni 2012 - 01:31 Der er 2 kommentarer og
1 løsning

Hvor meget skal jeg .free?

Jeg har et object af typen:
type TPicInfoClass = class
    filename: string;
    ext : string;
    caption : string;
    comment : string;
    filedataraw : TMemoryStream;
    end;

Og aå har jeg en list af disse objecter:
ListOfFiles: TList;

Efter at have lavet
tmpPicInfoClass := TPicInfoClass.Create;
tmpPicInfoClass.ext := '.zzz';
tmpPicInfoClass.filedataraw := CreateBlobStream(somefield);
(osv.)
så tilføjer jeg den til min liste:
ListOfFiles.Add(tmpPicInfoClass);

Mit spørgsmål er så, hvor meget er jeg nødt til at .free?

Er det nok bare med ListOfFiles.free eller skal jeg løbe listen i gennem og .free hvert enkelt object? Og skal jeg også særskilt .free TMemoryStream?

På forhånd tak for hjælpen.
Avatar billede arne_v Ekspert
22. juni 2012 - 03:43 #1
du skal selv free alle elementer i en TList

du skal ogaa selv free din TMemoryStream
Avatar billede martinlind Nybegynder
22. juni 2012 - 12:05 #2
Det object skal override destroy og i den free'er du memorrstrem og andre classer du har i dit object.
Og hvis du bruger TList skal du selv ryde op, du kan også vælge en TOwnedList den fjerner selv sine objecter
Avatar billede skovjuul Nybegynder
22. juni 2012 - 12:32 #3
Ok, så nu har jeg tilføjet:
destructor TPicInfoClass.Destroy;
begin
  inherited;
  Filedataraw.Free;
end;

Og så løber jeg bare min liste igennem:
procedure TfrmVisFiler.DestroyFileList;
var
  i:integer;
begin
  for i := 0 to ListOfFiles.Count-1 do begin
    TPicInfoClass(ListOfFiles.Items[i]).Free;
  end;
  ListOfFiles.Free;
end;

Tak for hjælpen begge to. Smid et svar Arne.

God weekend.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester