![]() |
AW: Redord zu TStringlist hinzufügen
Wenn kein ARC in Sicht ist,
dann Pointere doch einfach bissl rum. |
AW: Redord zu TStringlist hinzufügen
Zitat:
Gruß K-H |
AW: Redord zu TStringlist hinzufügen
Dann gehts nicht.
|
AW: Redord zu TStringlist hinzufügen
Was geht nicht?
Gruß K-H |
AW: Redord zu TStringlist hinzufügen
Record in Stringliste ablegen.
|
AW: Redord zu TStringlist hinzufügen
Nee, aber Zeiger auf Records ginge
oder Records in Dataobjekten. Oder seit D2009 eine generische TList<Record> bzw. vermutlich eher ein TDictionary<String,Record> |
AW: Redord zu TStringlist hinzufügen
Zitat:
geht jetzt.
Delphi-Quellcode:
SpriteList: TList<TSprite>;
Delphi-Quellcode:
SpriteList := TList<TSprite>.Create();
Allerdings meldet er nun das der linken Seite nichts zugewiesen werden kann.
Delphi-Quellcode:
SpriteList.Items[K].Left := ..
Wieder so ein Sonderfall ;) gruss |
AW: Redord zu TStringlist hinzufügen
Zitat:
Es kann immer nur ein kompletter Record geändert werden, was auch klar, da es entweder der Getter oder der Setter benutzt wird und leider niemals Beides (außer man macht es selber) und da Records auch keine Referenzen sind, wie z.B. ein Objekt. :zwinker: |
AW: Redord zu TStringlist hinzufügen
Zitat:
Ich muss die einzelnen Variablen im Record verändern können. selbst das funktioniert nicht einmal
Delphi-Quellcode:
Sprite := @SpriteList.Items[Prop.RecycleBin];
Variable erforderlich. OK Danke denke das kann man dann getrost vergessen. gruss |
AW: Redord zu TStringlist hinzufügen
Selbst wenn es funktionieren würde, würde es dich nicht helfen, denn das "Result" ist eine Kopie des Inhalts.
Man kann der TList<> ein neues Items-Property verpassen, welches einen Pointer raus gibt, der auf das Items im internen Record zeigt. Ist natürlich nicht standardmäßig eingebaut, da es ein Sonderfall und außerdem "unsicher" ist. Dann doch eher die TList abbauen und veränderbare Felder als eigene Property einbauen und intern dann jeweils
Delphi-Quellcode:
Du willst einen Record, also mußt du auch mit den Nachteilen leben.
procedure SetFeldAbc(Index: Integer; Value: TAbc);
var Temp: T; begin //InternesArray[Index].Abc := Value; Temp := Items[Index]; Temp.Abc := Value; Items[Index] := Temp; end; Alternativ kann man auch ein TArray<TDeinRecord> verwenden. Aber die Arraymanipulation (mit Ausnahme des Copy und einer binären Suche für sortierte Arrays) sind im "älteren" Delphi noch spärlich integriert, vorallem Delete und Insert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 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