Zitat von
Popov:
Zitat von
Neutral General:
Delphi-Quellcode:
Finalize(Record);
FillChar(Record,SizeOf(TRecord),0);
Also funktionieren tut es ja, aber ist das auch sauber? Also ich hab mich schon lange nicht mehr mit dem inneren Aufbau der Variablen beschäftigt, aber wie lang ist ein String im Speicher? Also "Hallo" dürfte 5 Zeichen lang sein und ist es nicht so, daß die Länge 5 auch vermerkt wird? Wenn ich sie nun auf 0 stelle, kürze ich die zwar, hinterlasse aber, zwar genullten Bereich, aber immerhin, im Speicher.
Wie gesagt, interessiert mich nur etwas. Kann auch falsch sein.
Ich gehe einfach mal davon aus, dass Finalize das übernimmt. Wie gesagt. Es gibt ohne Finalize ein MemoryLeak, mit nicht.
Edit: Hab mal was ausprobiert:
Delphi-Quellcode:
// EinString = 'Test';
procedure TRecord.Clear;
begin
ShowMessage(EinString); // 'Test'
Finalize(Self);
ShowMessage(EinString); // ''
FillChar(Self,SizeOf(Self),0);
end;
Damit dürften wohl alle Zweifel und Unklarheiten aus der Welt geschafft sein
Zitat von
Popov:
Zitat von
Neutral General:
Edit: Schade, dass es keine Vererbung bei Records gibt, sonst hätte man da was TObject-mäßiges bauen können
Wieso nicht gleich eine Klasse?
Frag mich das nicht. Ich benutze seit einiger Zeit keine Records mehr
Aber würde halt Spaß machen son TRecord zu bauen
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."