Anfängerfragen zum Programmieren mit PureBasic.
x_to
Beiträge: 16 Registriert: 24.08.2005 21:20
Kontaktdaten:
Beitrag
von x_to » 03.12.2006 13:11
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
HeX0R
Beiträge: 2954 Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X 96Gig Ram NVIDIA GEFORCE RTX 3060TI/8Gig Win10 64Bit G19 Tastatur 2x 24" + 1x27" Monitore Glorious O Wireless Maus PB 3.x-PB 6.x Oculus Quest 2
Kontaktdaten:
Beitrag
von HeX0R » 03.12.2006 13:24
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.
Kaeru Gaman
Beiträge: 17389 Registriert: 10.11.2004 03:22
Beitrag
von Kaeru Gaman » 03.12.2006 13:43
und so eine konstruktion
würde nur dann funktionieren, wenn die fastcalled function einen pointer zu einem string zurückgibt.
PS: meinte HeXOr evtl. auch so...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
#NULL
Beiträge: 2235 Registriert: 20.04.2006 09:50
Beitrag
von #NULL » 03.12.2006 13:46
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
HeX0R
Beiträge: 2954 Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X 96Gig Ram NVIDIA GEFORCE RTX 3060TI/8Gig Win10 64Bit G19 Tastatur 2x 24" + 1x27" Monitore Glorious O Wireless Maus PB 3.x-PB 6.x Oculus Quest 2
Kontaktdaten:
Beitrag
von HeX0R » 03.12.2006 14:10
Das stimmt so nicht #NULL, richtig wäre:
mk-soft
Beiträge: 3695 Registriert: 24.11.2004 13:12
Wohnort: Germany
Beitrag
von mk-soft » 03.12.2006 14:35
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