![]() |
Pointer auf einen String
Ich hab mal noch eine Frage...
Wie kann ich einen Pointer auf einen String herstellen. So...
Delphi-Quellcode:
...bekomme ich nur einen "|" als Antwort, wenn ich @roomid[i] schreibe bekomme ich nur den ersten Buchstaben.
var roomid:string;
ptr:Pointer; ptr := @roomid; showmessage(pchar(base.settings.Items[i].ptr)^); Danke für eure Hilfe, Igel457 |
Re: Pointer auf einen String
Delphi-Quellcode:
var
roomid:string; ptr: PChar; begin ptr := PChar(roomid); showmessage(ptr); end; |
Re: Pointer auf einen String
Mein Compiler meckert mir "Ungültige Typumwandlung"... Trotzdem Danke
|
Re: Pointer auf einen String
:wall:
Ich nehme (fast) alles zurück... Bei mir sieht es im Groben so aus (ptr2 muss leider sein)
Delphi-Quellcode:
:bounce1:
var
roomid:string; ptr: PChar; ptr2:pointer; begin ptr := PChar(@roomid); ptr2 := ptr; showmessage(pchar(ptr)); end; Danke! |
Re: Pointer auf einen String
Zitat:
Delphi-Quellcode:
var
roomid:string; ptr: PChar; tmp: string; begin ptr := PChar(roomid); tmp := ptr; showmessage(tmp); end; |
Re: Pointer auf einen String
:gruebel: Nein... Das war ein Mistverständnis... Hier: -> ptr := PChar(@roomid); <- kam der Fehler!
Das mit "ShowMessage" war nur ein Beispiel von mir um klar zu machen was ich wollte... :-D |
Re: Pointer auf einen String
@S zeigt auf den internen Pointer des Stgings (jener, welcher speichert wo die Stringdaten abgelegt sind), wenn du einen Pointer auf den String selber haben möchtest, dann verwende Pointer(S), hol dir den Pointer auf das erste Zeichen @S[1], oder caste diesen nach PChar/PAnsiChar PChar(S).
wobei ich dir wohl empfehlen würde die Varianten mit @S[1] und PChar(S) zu verwenden, daß direkte umwandeln per Pointer(S) geht zwas schneller und erzeugt weniger Code, aber wenn man nicht weiß was man macht, dann kann man sich einige Probleme damit einhandeln, wobei bei den anderen beiden Varianten die CompilerMagic einem etwas Arbeit abnimmt. |
Re: Pointer auf einen String
Funktioniert denn nicht, bzw. was funktioniert nicht dadran?:
Delphi-Quellcode:
Wo du aufpassen musst, ist dass der Ausgangsstrings noch nicht wieder gelöscht ist (zum Beispiel Funktion in dem der String deklariert ist, wurde verlassen).
var roomid:string;
ptr: PString; ptr := @roomid; showmessage(ptr^); |
Re: Pointer auf einen String
Nein, das funktioniert nicht...
Die Lösung von Oben ist schon Okay. |
Re: Pointer auf einen String
Zitat:
Zitat:
Kannst du denn jetzt in Ptr was schreiben, so dass es dann auch direkt in RoomId ohne irgendwelche Umwandlungen drin steht? Sorry, hab im Moment kein Delphi hier, sonst hätte ich es schon längst ausprobiert ;) |
Re: Pointer auf einen String
Zitat:
|
Re: Pointer auf einen String
Ich schau heute Abend nochmal. Auf jeden Fall gehts auch so wie mit Integers und anderen Datentypen ;) Der JvInspector machst ja auch.
|
Re: Pointer auf einen String
Mein Inspektor geht jezt auch. Ich schau mir aber trotzdem noch mal die JEDI-Variante etwas genauer an.
|
Re: Pointer auf einen String
Kann mir einer verraten warum das keiner so gemacht hat? :gruebel:
Delphi-Quellcode:
[...]
var Str: String; PStr: ^String; begin Str := '123'; PStr := @Str; ShowMessage(PStr^); end; |
Re: Pointer auf einen String
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 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