AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Pointer auf einen String

Ein Thema von igel457 · begonnen am 25. Nov 2005 · letzter Beitrag vom 25. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#1

Pointer auf einen String

  Alt 25. Nov 2005, 10:52
Ich hab mal noch eine Frage...

Wie kann ich einen Pointer auf einen String herstellen.

So...
Delphi-Quellcode:
var roomid:string;
    ptr:Pointer;
ptr := @roomid;
showmessage(pchar(base.settings.Items[i].ptr)^);
...bekomme ich nur einen "|" als Antwort, wenn ich @roomid[i] schreibe bekomme ich nur den ersten Buchstaben.

Danke für eure Hilfe, Igel457
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Pointer auf einen String

  Alt 25. Nov 2005, 10:57
Delphi-Quellcode:
var
  roomid:string;
  ptr: PChar;
begin
  ptr := PChar(roomid);
  showmessage(ptr);
end;
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Pointer auf einen String

  Alt 25. Nov 2005, 10:58
Mein Compiler meckert mir "Ungültige Typumwandlung"... Trotzdem Danke
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Pointer auf einen String

  Alt 25. Nov 2005, 11:07


Ich nehme (fast) alles zurück... Bei mir sieht es im Groben so aus (ptr2 muss leider sein)
Delphi-Quellcode:
var
  roomid:string;
  ptr: PChar;
  ptr2:pointer;
begin
  ptr := PChar(@roomid);
  ptr2 := ptr;
  showmessage(pchar(ptr));
end;


Danke!
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Pointer auf einen String

  Alt 25. Nov 2005, 11:11
Zitat von igel457:
Mein Compiler meckert mir "Ungültige Typumwandlung"... Trotzdem Danke
Wenn showmessage die Standard-Delphi-Methode ist, ist es klar. Die brauch natürlich eine String.

Delphi-Quellcode:
var
  roomid:string;
  ptr: PChar;
  tmp: string;
begin
  ptr := PChar(roomid);
  tmp := ptr;
  showmessage(tmp);
end;
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Pointer auf einen String

  Alt 25. Nov 2005, 11:18
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...
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#7

Re: Pointer auf einen String

  Alt 25. Nov 2005, 11:29
@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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#8

Re: Pointer auf einen String

  Alt 25. Nov 2005, 11:33
Funktioniert denn nicht, bzw. was funktioniert nicht dadran?:
Delphi-Quellcode:
var roomid:string;
    ptr: PString;
ptr := @roomid;
showmessage(ptr^);
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).
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Pointer auf einen String

  Alt 25. Nov 2005, 11:39
Nein, das funktioniert nicht...
Die Lösung von Oben ist schon Okay.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#10

Re: Pointer auf einen String

  Alt 25. Nov 2005, 12:33
Zitat von igel457:
Nein, das funktioniert nicht...
Mich würde mal interessieren was nicht klappt!

Zitat von igel457:
Die Lösung von Oben ist schon Okay.
Aber erreichst du damit auch dein Ziel, dass du dann einfach die Variable ändern kannst, auf die dein Pointer zeigt? Denn Hin- und Herkopieren ist ja einfach.

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
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:12 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