Wie ändere ich den TListrecord-Wert?

8

Delphi 2010 So ändern Sie TList & lt; aufnehmen & gt; Wert?

%Vor%     
Astronavigator 30.04.2010, 20:24
quelle

4 Antworten

9
%Vor%

Sie müssen dies nicht mit Objekten tun, da es sich um Referenztypen handelt (Zugriff über einen Zeiger, den der Compiler intern verwaltet, um es aus Ihren Haaren zu lassen), aber Datensätze sind Werttypen, so dass sie nicht funktionieren auf diese Weise.

    
Mason Wheeler 30.04.2010 20:36
quelle
6

Sie haben einen Haken mit der Verwendung von Datensätzen gefunden.

Betrachten Sie diesen Code:

%Vor%

Wie Ihr Code für den Compiler aussieht, ist das folgende:

%Vor%

Der Compiler teilt Ihnen mit der Fehlermeldung mit, dass die Zuweisung sinnlos ist, da er nur einem temporären Datensatzwert einen neuen Wert zuweist, der sofort vergessen wird.

Außerdem ist @List[10] ungültig, weil List[10] wiederum nur einen temporären Datensatzwert zurückgibt, daher ist es ziemlich sinnlos, die Adresse dieses Datensatzes zu nehmen.

Das Lesen und Schreiben des gesamten Datensatzes ist jedoch in Ordnung.

Also zusammenfassend:

%Vor%     
quelle
2

Wenn Sie Datensätze speichern möchten, eignen sich dynamische Arrays besser dazu:

%Vor%

Wenn Sie Methoden zum Bearbeiten dieser Daten hinzufügen müssen, können Sie dieses Array als Feld einer Klasse speichern und Ihre Methoden zu dieser Klasse hinzufügen.

    
LeGEC 03.05.2010 12:21
quelle
1

Wenn Sie Objekte in diesem Formular bearbeiten müssen, ist es besser, TObjectList anstelle von TList zu verwenden und die Struktur als Klasse und nicht als Datensatz zu definieren:

%Vor%     
quelle

Tags und Links