Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wichtige Frage zu Records (https://www.delphipraxis.net/11929-wichtige-frage-zu-records.html)

marcgeldon 17. Nov 2003 09:45


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

Sanchez 17. Nov 2003 09:49

Re: Wichtige Frage zu Records
 
hi,
probiers mal mit fillchar.

Einfach
Delphi-Quellcode:
  fillchar(VariableVonEintrag, sizeof(Eintrag), #0);
grüße, daniel

Daniel B 17. Nov 2003 09:50

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.

proitsystems 17. Nov 2003 09:54

Re: Wichtige Frage zu Records
 
Vielen Dank für die prompte Antwort. FillChar macht genau das was es soll :-)


Liebe Grüsse,

Marc

Christian Seehase 17. Nov 2003 19:16

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.

Pseudemys Nelsoni 6. Dez 2003 12:03

Re: Wichtige Frage zu Records
 
in meinem delphi buch wird auch FillChar benutzt^^

jbg 6. Dez 2003 12:21

Re: Wichtige Frage zu Records
 
Zitat:

Zitat von Pseudemys Nelsoni
in meinem delphi buch wird auch FillChar benutzt^^

Wenn das bei Strings (nicht ShortString) FillChar benutzt, dann würde ich das Buch schnell in die Mülltonne werfen.

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:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz