Seite 1 von 1

string als rückgabewert aus einer dll empfangen

Verfasst: 03.12.2006 13:11
von x_to
ich habe folgendes problem:


ich habe hier eine dll in der eine funktion ist, die mir als ergebnis einen string zurückgibt.

allerdings funktioniert es nicht so wie ich es mir vorgestellt habe:

Code: Alles auswählen

Ergebnis.l = OpenLibrary (0,"C:\CAPSImg.dll") 
Debug ergebnis.l
Ergebnis2.l =IsFunction(0,"CAPSInit")
Debug ergebnis2
Debug PeekS(CallCFunctionFast(0,"CAPSInit"),255)
CloseLibrary(1)
in der dokumentation steht, daß der rückgabewert ein SDWORD ist und als rückgabe "imgeOK" zurückgibt...

was mache ich falsch..???

DLL: http://www.softpres.org/_media/files:ip ... ache=cache

DOKU: http://www.softpres.org/_media/files:ip ... ache=cache

Verfasst: 03.12.2006 13:24
von HeX0R
Laut Doku ist imageOK eine Konstante mit Wert 0, wie kommst du denn auf einen String ?
Ausserdem musst du bei CallFunctionFast die Adresse aufrufen, die du bei IsFunction() zurückbekommst.

Verfasst: 03.12.2006 13:43
von Kaeru Gaman
und so eine konstruktion

Code: Alles auswählen

PeekS(CallCFunctionFast(
würde nur dann funktionieren, wenn die fastcalled function einen pointer zu einem string zurückgibt.

PS: meinte HeXOr evtl. auch so...

Verfasst: 03.12.2006 13:46
von #NULL
pb4

Code: Alles auswählen

If OpenLibrary (0,"C:\CAPSImg.dll")
  *pF.l =GetFunction(0,"CAPSInit")
  If CallCFunctionFast(*pF,"CAPSInit")=0
    ;...
    Debug "arbeiten"
    ;...
  EndIf
  CloseLibrary(1)
EndIf
pb394

Code: Alles auswählen

If OpenLibrary (0,"C:\CAPSImg.dll")
  *pF.l =IsFunction(0,"CAPSInit")
  If CallCFunctionFast(*pF,"CAPSInit")=0
    ;...
    Debug "arbeiten"
    ;...
  EndIf
  CloseLibrary(1)
EndIf

Verfasst: 03.12.2006 14:10
von HeX0R
Das stimmt so nicht #NULL, richtig wäre:

Code: Alles auswählen

CallCFunctionFast(*pF)

Verfasst: 03.12.2006 14:35
von mk-soft
Wie ich sehe ist es eine Funktion ohne Parameter

Code: Alles auswählen

Ergebnis = CallFunction(#Library, "CAPSInit")

; oder

*CAPSInit = GetFunction(#Library, "CAPSInit")

Ergebnis = CallFunctionFast(*CAPSInit) 
FF :wink: