DLL Funktion liefert pointer auf Buffer zurück (erledigt)
Moderator: Moderatoren
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
DLL Funktion liefert pointer auf Buffer zurück (erledigt)
Hallo,
habe eine Frage zu einer C-DLL.
Eine Funktion liefert mir einen Pointer auf einen temporären Buffer zurück. Wie komme ich an den Inhalt dieses Buffers ?
Die funktion( char** liste) rufe ich auf mit
liste:=0 ; funktion(@liste) Danach enthält liste einen numerischen Wert.
habe eine Frage zu einer C-DLL.
Eine Funktion liefert mir einen Pointer auf einen temporären Buffer zurück. Wie komme ich an den Inhalt dieses Buffers ?
Die funktion( char** liste) rufe ich auf mit
liste:=0 ; funktion(@liste) Danach enthält liste einen numerischen Wert.
Zuletzt geändert von Wolfgang Ciriack am Fr, 24. Aug 2018 14:20, insgesamt 1-mal geändert.
Viele Grüße
Wolfgang
Wolfgang
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: DLL Funktion liefert pointer auf Buffer zurück
So sollte es gehen.
Liste := substr(Liste, 1, At(Chr(0),Liste)-1 )
Liste := substr(Liste, 1, At(Chr(0),Liste)-1 )
Gruß
Klaus
Klaus
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: DLL Funktion liefert pointer auf Buffer zurück
Nö, Liste ist ja ein numerischer Wert (Pointer).
Viele Grüße
Wolfgang
Wolfgang
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: DLL Funktion liefert pointer auf Buffer zurück
Bei pablo gibt es peek und poke funktionen. Die Daten sind mit Stringoperationen nicht zu bekommen.
Stringvars sind zwar im Prinzip Pointer auf Strings, aber die Speicherbereiche sind andere.
evtl. hilft dir die Funktion die er in seiner (von mir verwendeten) QuickPDF wrapper klasse geschrieben hat um strings zurückzugeben.
Mit xbase Bordmitteln könnte man das versuchen:
cData := @Liste
Stringvars sind zwar im Prinzip Pointer auf Strings, aber die Speicherbereiche sind andere.
evtl. hilft dir die Funktion die er in seiner (von mir verwendeten) QuickPDF wrapper klasse geschrieben hat um strings zurückzugeben.
Mit xbase Bordmitteln könnte man das versuchen:
cData := @Liste
Gruß
Hubert
Hubert
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: DLL Funktion liefert pointer auf Buffer zurück
Hallo Hubert,
könntest du mir diese Funktion mal mailen ? (ciriack_at_ciju_dot_de)
Oder wo finde ich Infos zu peek and poke ?
könntest du mir diese Funktion mal mailen ? (ciriack_at_ciju_dot_de)
Oder wo finde ich Infos zu peek and poke ?
Viele Grüße
Wolfgang
Wolfgang
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: DLL Funktion liefert pointer auf Buffer zurück
Code: Alles auswählen
INLINE METHOD _str_result_(p) // p ist pointer auf einen Textstring im temporären Speicher zwischen DLL und Xbase++ APP
local cb
if Empty(p) ; RETURN "" ; end
cb := ::AnsiStringResultLength() //::StringResultLength() // QuickPDF Funktion die die Länge liefert ???
return PeekStr(p,0,cb)
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: DLL Funktion liefert pointer auf Buffer zurück
die Funktionen der XbTools3() sind in 2.0 nicht mehr enthalten, man braucht also die ot4xb von pablo
genauer man findet sie in der Hilfe, aber "nicht unterstützt" ...
genauer man findet sie in der Hilfe, aber "nicht unterstützt" ...
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: DLL Funktion liefert pointer auf Buffer zurück
schau mal hier:
http://www.xbwin.com/
=> peek-poke-functions
unter anderem, das scheint das neue Hilfeformat zu sein.
http://www.xbwin.com/
=> peek-poke-functions
unter anderem, das scheint das neue Hilfeformat zu sein.
Gruß
Hubert
Hubert
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: DLL Funktion liefert pointer auf Buffer zurück
Danke Hubert, mit peekstr() klappt es.
Viele Grüße
Wolfgang
Wolfgang