Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#40

Re: Record zurücksetzen (löschen)

  Alt 14. Sep 2008, 14:31
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."
  Mit Zitat antworten Zitat