DLL Funktion liefert pointer auf Buffer zurück (erledigt)

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
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)

Beitrag von Wolfgang Ciriack »

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.
Zuletzt geändert von Wolfgang Ciriack am Fr, 24. Aug 2018 14:20, insgesamt 1-mal geändert.
Viele Grüße
Wolfgang
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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

Beitrag von Koverhage »

So sollte es gehen.

Liste := substr(Liste, 1, At(Chr(0),Liste)-1 )
Gruß
Klaus
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
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

Beitrag von Wolfgang Ciriack »

Nö, Liste ist ja ein numerischer Wert (Pointer).
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DLL Funktion liefert pointer auf Buffer zurück

Beitrag von brandelh »

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
Gruß
Hubert
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
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

Beitrag von Wolfgang Ciriack »

Hallo Hubert,
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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DLL Funktion liefert pointer auf Buffer zurück

Beitrag von brandelh »

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)
wenn die länge unbekannt ist kann an evtl. genug einlesen und auf chr(0) untersuchen, alles was links davon ist ist text.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DLL Funktion liefert pointer auf Buffer zurück

Beitrag von brandelh »

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" ...
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DLL Funktion liefert pointer auf Buffer zurück

Beitrag von brandelh »

schau mal hier:

http://www.xbwin.com/

=> peek-poke-functions

unter anderem, das scheint das neue Hilfeformat zu sein.
Gruß
Hubert
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
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

Beitrag von Wolfgang Ciriack »

Danke Hubert, mit peekstr() klappt es.
Viele Grüße
Wolfgang
Antworten