22. juni 2012 - 01:31Der 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?
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
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
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.
Synes godt om
Ny brugerNybegynder
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.