Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String als Pointer an Objekt übergeben (https://www.delphipraxis.net/181039-string-als-pointer-objekt-uebergeben.html)

Marco.Fischer 9. Jul 2014 17:01

String als Pointer an Objekt übergeben
 
Hallo,
ich habe Objekte vom Typ TdxOcNode mit der Eigenschaft TdxOcNode.Data als Pointer, die weiterführende Informationen aufnehmen kann. Ich möchte hier gerne eine ID als String den Objekten mitgeben. Wie kann ich dies realisieren?

Bjoerk 9. Jul 2014 20:00

AW: String als Pointer an Objekt übergeben
 
Delphi-Quellcode:
ID := 'Tach': Node.Data := PChar(ID); ID := PChar(Node.Data);

himitsu 9. Jul 2014 20:05

AW: String als Pointer an Objekt übergeben
 
Am Besten mit einem Daten-Objekt, in welchem du ein String-Feld für die ID definierst.

Oder als PChar, allerding mit explizit reservierten Speicher.
StrNew oder StrAlloc+StringToWideChar
StrDispose


Und wer hier anfängt "strings kann man doch in PChar kasten", der bekommt ein paar auf die Finger,
denn damit ist schon vorprogramiert, daß jemand die Referenzzählung schrottet.

[edit]
War wohl zu langsam.

Ich hol' schonmal den Rohrstock aus'm Keller.

mkinzler 10. Jul 2014 06:39

AW: String als Pointer an Objekt übergeben
 
Zitat:

Zitat von Bjoerk (Beitrag 1265020)
Delphi-Quellcode:
ID := 'Tach': Node.Data := PChar(ID); ID := PChar(Node.Data);

Ist aber gefährlich, da ID mit nicht ganz kleiner Wahrscheinlichkeit später nicht mehr existiert und der Zeiger dann ins Nirvana zeigt. Im Besten Fall wird dann Schrott angezeigt.
Besser ist es explizit Speicher zu reservieren. (Siehe auch Franks Beitrag)

Bjoerk 10. Jul 2014 08:19

AW: String als Pointer an Objekt übergeben
 
Oh ja. Sorry. Ich hatte es nicht ausprobiert. :oops: Wollte nur kurz auf das PChar hinweisen.

Hier würde sich vermutlich anbieten eine Klasse von TComponent abzuleiten mit einem Feld ID und beim Erzeugen als Owner die Komponente oder den Node anzugeben.

Marco.Fischer 10. Jul 2014 10:12

AW: String als Pointer an Objekt übergeben
 
Hallo,
vielen Dank für die Informationen. Der Tipp mit dem Datenobjekt war hilfreich und führt zum gewünschten Ergebnis.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:42 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