Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Pointer -> String
maxk - Fr 14.02.03 19:27
Titel: Pointer -> String
Hi,
wie kann ich einen Pointer in einen String umwandeln?
Folgendes klappt nicht:
Quelltext
1: 2: 3: 4:
| function PointerToStr(data:Pointer); begin Result:=StrPas(data); end; |
maxk
smiegel - Fr 14.02.03 19:31
Hallo,
Du musst den Pointer in einen PChar überführen:
Quelltext
1: 2: 3:
| ... Result:=StrPas(PChar(data)); ... |
maxk - Fr 14.02.03 19:42
Das klappt nicht wirklich! Delphi steigt mit Zugriffsverletzungen aus! :(
smiegel - Fr 14.02.03 19:53
Hallo,
wäre nett, wenn Du die Fehlermeldung 'mal genauer spezifierst.
Wie wird die Funktion aufgerufen?
DaFox - Fr 14.02.03 20:30
Hi.
- Wieso hat Deine Funktion kein Ergebnistyp?
- Auf was zeigt denn der Pointer? Das mit dem StrPas funktioniert bei PChars, aber nicht bei allen Pointern (logischerweise)
Willst Du die Adresse des Pointers haben?
Quelltext
1: 2: 3: 4:
| function PointerToStr(data: Pointer): String; begin Result := IntToHex(Integer(data),8); end; |
Fragen über Fragen! :wink:
Gruß,
Markus
maxk - So 16.02.03 19:37
@DaFox: Jetzt hast du mich ganz verwirrt! :lol:
@schmiegel:Das kann ich dir auch net sagen:
Zugriffsverletzung an Adresse 0 :!:
HeLe - So 02.03.03 12:57
ich will jetzt nicht oberlehrerhaft wirken, aber ich bin mir eigentlich zu 99,9% sicher, daß du überhaupt keine zeiger benötigst - und erst recht keine untypisierten!
weißt du was ein referenzparameter (parameter, vor denen var steht) ist?
maxk - So 02.03.03 14:24
Das Problem ist nur, dass mir Windows nach einer WinAPI-Funktion nur Pointer zulässt. Da habe ich keine großen Wahl-Möglichkeiten. :cry:
HeLe - So 02.03.03 18:09
| maxk hat folgendes geschrieben: |
| Das Problem ist nur, dass mir Windows nach einer WinAPI-Funktion nur Pointer zulässt. Da habe ich keine großen Wahl-Möglichkeiten. :cry: |
Dann nimmst du trotzdem ganz normale Strings und castest die beim Aufruf der API-Funktionen in den Datentyp
pchar. Der ist definiert als ^char, entspricht also exakt einem String unter C (char*). Bsp:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| var s: string; pc: pchar; begin s:='test'; pc:=pchar(s); irgendneAPIfunktion( pchar(s) ); {...} |
Und ich sag's noch einmal:
untypisierte Zeiger (Datentyp
pointer) sind absolut pfui, schmutzig, bah, damit spielt man nicht :evil:
wirklich nötig sind die nur
a) für absolute Low-Level-Programmierung oder wenn man
b) total unleserliche, wild mit Fehlern um sich schmeißende Programme haben möchte
maxk - So 02.03.03 20:57
| Zitat: |
Und ich sag's noch einmal: untypisierte Zeiger (Datentyp pointer) sind absolut pfui, schmutzig, bah, damit spielt man nicht
wirklich nötig sind die nur
a) für absolute Low-Level-Programmierung oder wenn man
b) total unleserliche, wild mit Fehlern um sich schmeißende Programme haben möchte |
lezteres hört sich gut an :mrgreen:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!