![]() |
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 ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 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