![]() |
Wichtige Frage zu Records
Hallo!
Folgende Frage hätte ich zu Records. Ich definiere meinen eigenen Record. Beispielsweise durch: type Eintrag = Record Vorname: String; Nachname: String; usw. end; Wie kann ich nun alle Einträge im Record leeren? Ok, folgendes wäre eine Möglichkeit: xxx.Vorname := ''; xxx.Nachname := ''; usw. sehr umständlich. Gibt es einen Befehl dafür der alle Einträge leert / auf 0 / nil setzt? Danke im voraus für eure Antworten! Liebe Grüsse, Marc |
Re: Wichtige Frage zu Records
hi,
probiers mal mit fillchar. Einfach
Delphi-Quellcode:
grüße, daniel
fillchar(VariableVonEintrag, sizeof(Eintrag), #0);
|
Re: Wichtige Frage zu Records
Hi,
Du hast dann noch sehr warscheinlich eine Variable im Sinne von: Array of TEintrag; //<-- Bitte den Record TEintrag nicht Eintrag nennen. Somit kannst Du mittels SetLength das Array kürzen, erweitern, oder einfach auf 0 setzen. Weiteres siehe OH. |
Re: Wichtige Frage zu Records
Vielen Dank für die prompte Antwort. FillChar macht genau das was es soll :-)
Liebe Grüsse, Marc |
Re: Wichtige Frage zu Records
Moin Sanchez,
hast Du dabei auch berücksichtigt, dass der Typ String ein Pointer ist, also mit FillChar nur die Referenzen auf die Inhalte gelöscht werden? Ich hab's jetzt nicht ausprobiert, könnte mir aber gut vorstellen, dass Du mit dieser Methode 'ne ganze Menge Datenmüll im Speicher hinterlässt. |
Re: Wichtige Frage zu Records
in meinem delphi buch wird auch FillChar benutzt^^
|
Re: Wichtige Frage zu Records
Zitat:
Wenn man schon FillChar mit Strings und dynamischen Arrays benutzen will, sollte man zumindest vorher Finalize(MyRecVar) aufrufen. Es bleiben aber noch Zeiger (und Referenzen), die nicht automatisch freigegeben werden. FillChar sollte man also nur bewusst einsetzen und nicht einfach weil es schneller ist und einfacher zu schreiben ist, denn was bring einem ein Programm, dass rasend schnell ist, aber mit der Zeit immer langsamer wird, da Windows keinen RAM mehr verfügbar hat und nur noch mit dem Transferieren der Speicherseiten in und aus der Swap-Datei beschäftigt ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz