| Autor |
Beitrag |
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Fr 14.02.03 18:27
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
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Fr 14.02.03 18:31
Hallo,
Du musst den Pointer in einen PChar überführen:
Quelltext 1: 2: 3:
| ... Result:=StrPas(PChar(data)); ... |
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
maxk 
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Fr 14.02.03 18:42
Das klappt nicht wirklich! Delphi steigt mit Zugriffsverletzungen aus! 
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Fr 14.02.03 18:53
Hallo,
wäre nett, wenn Du die Fehlermeldung 'mal genauer spezifierst.
Wie wird die Funktion aufgerufen?
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
DaFox
      
Beiträge: 189
|
Verfasst: Fr 14.02.03 19: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!
Gruß,
Markus
|
|
maxk 
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: So 16.02.03 18:37
@DaFox: Jetzt hast du mich ganz verwirrt!
@schmiegel:Das kann ich dir auch net sagen:
Zugriffsverletzung an Adresse 0 
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
HeLe
      
Beiträge: 21
|
Verfasst: So 02.03.03 11: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 
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: So 02.03.03 13: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. 
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
HeLe
      
Beiträge: 21
|
Verfasst: So 02.03.03 17: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.  |
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
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 
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: So 02.03.03 19: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 
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|