Delphi-PRAXiS
Seite 2 von 10     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Record zu TStringlist hinzufügen (https://www.delphipraxis.net/193030-record-zu-tstringlist-hinzufuegen.html)

himitsu 12. Jun 2017 21:16

AW: Redord zu TStringlist hinzufügen
 
Wenn kein ARC in Sicht ist,

dann Pointere doch einfach bissl rum.

p80286 12. Jun 2017 21:18

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von EWeiss (Beitrag 1374325)
Zitat:

Was enthalten denn die Strings, die in die Stringliste sollen? Willst du darüber die Sprites finden?
Welche strings?
Ich möchte den Record in die Liste packen und daraus die Variablen des Records auslesen können.
So wie ich das verstanden habe geht es wohl nicht.

gruss

Warum nimmst Du dann nicht eine TList oder eine Tobjectlist?

Gruß
K-H

SneakyBagels 12. Jun 2017 21:23

AW: Redord zu TStringlist hinzufügen
 
Dann gehts nicht.

p80286 12. Jun 2017 21:30

AW: Redord zu TStringlist hinzufügen
 
Was geht nicht?

Gruß
K-H

SneakyBagels 12. Jun 2017 21:45

AW: Redord zu TStringlist hinzufügen
 
Record in Stringliste ablegen.

himitsu 12. Jun 2017 21:57

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>

EWeiss 12. Jun 2017 22:11

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von himitsu (Beitrag 1374334)
Nee, aber Zeiger auf Records ginge
oder Records in Dataobjekten.

Oder seit D2009 eine generische TList<Record> bzw. vermutlich eher ein TDictionary<String,Record>

funktioniert nicht wirklich.
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

himitsu 12. Jun 2017 22:44

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von EWeiss (Beitrag 1374335)
Wieder so ein Sonderfall ;)

Nee, das ist schon immer so, wenn man einen Record als Property-Typ nutzt.

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:

EWeiss 12. Jun 2017 22:49

AW: Redord zu TStringlist hinzufügen
 
Zitat:

Zitat von himitsu (Beitrag 1374337)
Zitat:

Zitat von EWeiss (Beitrag 1374335)
Wieder so ein Sonderfall ;)

Nee, das ist schon immer so, wenn man einen Record als Property-Typ nutzt.

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:

Aber genau das möchte ich ansonsten macht es keinen sinn.
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

himitsu 13. Jun 2017 00:07

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:
procedure SetFeldAbc(Index: Integer; Value: TAbc);
var
  Temp: T;
begin
  //InternesArray[Index].Abc := Value;
  Temp := Items[Index];
  Temp.Abc := Value;
  Items[Index] := Temp;
end;
Du willst einen Record, also mußt du auch mit den Nachteilen leben.


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 17:30 Uhr.
Seite 2 von 10     12 34     Letzte »    

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