Zitat von
Hansa:
Bei verschachtelten Records läuft das genauso.
Delphi-Quellcode:
MyRecord : record
nr : Integer;
name : string [10];
MyRecord2 : record
nr : Integer;
name : string [10];
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MyRecord.nr := 1;
MyRecord.name := 'XYZ';
MyRecord.MyRecord2.nr := 2;
MyRecord.MyRecord2.name := 'XYZ2';
memo2.Lines.Add(IntToStr(MyRecord.nr));
memo2.Lines.Add('*'+MyRecord.name+'*');
memo2.Lines.Add('');
FillChar (MyRecord,SizeOf (MyRecord),0);
memo2.Lines.Add(IntToStr(MyRecord.nr));
memo2.Lines.Add('*'+MyRecord.name+'*');
memo2.Lines.Add(IntToStr(MyRecord.MyRecord2.nr));
memo2.Lines.Add('*'+MyRecord.MyRecord2.name+'*');
end;
Ergebnis : Anhang. In diesem Beispiel ist auch das Finalize völlig überflüssig.
Zitat von
SubData:
Hatten wir nicht gerade, dass bei globalen Variablen mit der Methode ein MemoryLeak auftritt ?!
Dieses Beispiel ist in diesem Thread hier total fehl am Platz. Dadurch, dass Hansa jetzt in seinem Record Shortstrings benutzt hat, gibts das Problem natürlich nicht. ShortStrings sind eben keine Pointer. Von daher ist ein Finalize tatsächlich nicht nötig. Was Hansa jetzt damit sagen/verdeutlichen will, weiß ich allerdings nicht. Mir scheint, als hätte er nicht verstanden, worum es hier in dieser Diskussion geht.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."