Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Alle Record-Einträge löschen (https://www.delphipraxis.net/44179-alle-record-eintraege-loeschen.html)

malo 14. Apr 2005 18:28


Alle Record-Einträge löschen
 
Gibt es eine Möglichkeit, alle Record-Einträge zu löschen? Ich hab nämlich ein Array von meinem Record, von dem ich gerne einen Index komplett rauslöschen will (samt Record-Einträge). Da es jedoch einige Einträge sind, will ich sie nicht "per Hand" löschen, sondern am liebsten durch eine bereits fertige Funktion, falls möglich. Gibt es vielleicht etwas derartiges?

Robert_G 14. Apr 2005 18:32

Re: Alle Record-Einträge löschen
 
Da wäre mir doch fast ein "Nimm' doch einfach 'ne Liste" rausgerutscht. :mrgreen:
Wenn's unbedingt ein Array sein soll wäre vielleicht eine TList-Ableitung am praktischsten. ;)

Aber wenn ich schon wieder lesen muss, dass Records benutzt werden um Daten abzubilden... :roll:

marabu 14. Apr 2005 18:37

Re: Alle Record-Einträge löschen
 
Du kannst die Einträge einzeln umschichten oder auch den Speicherinhalt verschieben (Move und FillChar).

malo 14. Apr 2005 18:44

Re: Alle Record-Einträge löschen
 
Zitat:

Zitat von Robert_G
Da wäre mir doch fast ein "Nimm' doch einfach 'ne Liste" rausgerutscht. :mrgreen:
Wenn's unbedingt ein Array sein soll wäre vielleicht eine TList-Ableitung am praktischsten. ;)

TList scheint ja ziemlich beliebt zu sein... ich sollte mich mal damit vertraut machen ;)


Zitat:

Aber wenn ich schon wieder lesen muss, dass Records benutzt werden um Daten abzubilden... :roll:
Naja, ich find Records einfach praktisch, um Daten in eine ini zu speichern bzw. auszulesen... ich mag sie halt :)

Jens Schumann 14. Apr 2005 19:05

Re: Alle Record-Einträge löschen
 
Hallo malo,
Robert_G hat recht. Records mögen Dir evt. ganz praktisch erscheinen aber weit kommt man damit nicht.
Gerade Objekte lassen sich einfacher speichern als Records. SiehedpCollection
Ich kann Dir nur empfehlen in Objekten zu denken.

Binärbaum 14. Apr 2005 19:42

Re: Alle Record-Einträge löschen
 
Zitat:

Zitat von Jens Schumann
Robert_G hat recht. Records mögen Dir evt. ganz praktisch erscheinen aber weit kommt man damit nicht.

Also jetzt tun ja alle, als wäre es schlimm, wenn man Records verwendet.
Records können doch recht praktisch sein. Ob sie das auch für den Zweck sind, für den sie im konkreten Fall verwendet werden, ist eine andere Frage. :stupid:

MfG
Binärbaum

Robert_G 14. Apr 2005 19:45

Re: Alle Record-Einträge löschen
 
Zitat:

Zitat von Binärbaum
Zitat:

Zitat von Jens Schumann
Robert_G hat recht. Records mögen Dir evt. ganz praktisch erscheinen aber weit kommt man damit nicht.

Also jetzt tun ja alle, als wäre es schlimm, wenn man Records verwendet.

Was heißt jetzt? Ich tue immer so. :P

Zitat:

Zitat von Binärbaum
Records können doch recht praktisch sein. Ob sie das auch für den Zweck sind, für den sie im konkreten Fall verwendet werden, ist eine andere Frage. :stupid:

Der wäre einen halbwegs strukturierten Zugriff auf einen zusammenhängenden Datenblubb zu kriegen, den dir eine 200 Jahre alte WinAPI vorsetzt.
Ansonsten: Frag's Pferd... :gruebel:

BrunoT 14. Apr 2005 20:25

Re: Alle Record-Einträge löschen
 
Hi,

Hier ein Beispiel wie man so etwas schnell erledigt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Type
  b=record
   a:integer;
   b:string;
end;

var
  S: array[0..79] of b;
begin
  { Mit #0 füllen }
  FillChar(S, SizeOf(S), #0);
end;
mfg

BrunoT

Waldteufel 14. Apr 2005 20:33

Re: Alle Record-Einträge löschen
 
Hi.

BrunoTs Methode ist aber NUR für non-packed-records gut! Bei Klassen läuft man Gefahr, Methodentabellen zu überschreiben!

SirThornberry 14. Apr 2005 20:54

Re: Alle Record-Einträge löschen
 
und bei Records wo ein String drin ist, ist das auch nicht empfehlenswert weil somit der Pointer auf den String (ein String ist ja eigentlich nur ein Pointer) gelöscht wird aber der String noch existiert (Speicherleck).


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.
Seite 1 von 2  1 2      

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