LibnoDave daveUseResult Hilfe VBA

AloisKnepp

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus alle miteinander,

ich bin allgemein Neu im Forum bzw. in VBA, entschuldigt mich also falls mein Wissen limitiert ist.

Vor kurzem habe ich angefangen, mich mit der Library "LibnoDave" auseinanderzusetzen, und habe bereits den Großteil der Funktionen erfolgreich implementiert.

Vor kurzen bin ich dann auf ein Problem gestoßen das mir den Kopf zerbricht.
Ich habe einen Read Request mit Variablen aus unterschiedlichen Speicherbereichen in VBA programmiert.
Dabei bringt mir Visual Basic einen Fehler bei daveUseResult - "falsche DLL Aufrufkonvention".
Ich finde jedoch nicht das Problem. Kennt jmd. das Problem ?

Ich wäre sehr dankbar wenn ihr mir Ratschläge geben könnt , um das Problem zu lösen.(am Schluss mache ich nur was falsch...)

Ich habe ein Excel Sheet mit den Code eingefügt , der mir Probleme bereitet.

Grüße aus der USAAnhang anzeigen Versuch Lesen.zip
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,

Danke für die schnelle Antwort!

Der Code lautet:

Code:
Sub ReadData()


    With Tabelle1
    
    Dim ph As Long, di As Long, dc As Long, pdu As Long, rs As Long
        
    res = initialize(ph, di, dc)
    
    If res = 0 Then
    
     pdu = daveNewPDU
     rs = daveNewResultSet
     Call davePrepareReadRequest(dc, pdu)
     Call daveAddVarToReadRequest(pdu, daveDB, 1, 1, 1)
     res = daveExecReadRequest(dc, pdu, rs)
     res = daveGetResponse(dc)
     res = daveUseResult(dc, rs, 0)
       
    End If


    Call cleanUp(ph, di, dc, pdu, rs)
    
    End With
    
End Sub

Grüße
 
Das sollte eigentlich funktionieren. Hast du das Modul "Modul12.bas" aus libnodave eingebunden?

Dort sollte eine Zeile
Code:
Private Declare Function daveUseResult Lib "libnodave.dll" (ByVal dc As Long, ByVal rs As Long, ByVal resultNumber As Long) As Long
vorhanden sein.
 
Ja habe ich.

Das ist der Code dazu.

Code:
'
' Use the n-th result. This lets the functions daveGet<data type> work on that part of the
' internal buffer that contains the n-th result:
'
Private Declare Function daveUseResult Lib "libnodave.dll" (ByVal dc As Long, ByVal rs As Long, ByVal resultNumber As Long) As Long
'


Hatte das gleiche Problem auch mit der Funktion:

Code:
'
Private Declare Sub daveDumpPDU Lib "libnodave.dll" (ByVal pdu As Long)
'
 
Der einzige Pfad wo Libnodave auf C zu finden ist , ist unter windows\SysWOW64.
Ein zweite Libnodave.dll gibt es unter C nicht.
Allerdings habe ich die Libnodave auf meinen Desktop mehrmals gespeichert.
Kann das das Problem sein ?
 
Wenn deine Excel-Datei auch auf dem Desktop liegt, dann wird zuerst dort nach der Datei gesucht. Wenn sie dort nicht gefunden wird geht es in Windows/System32 oder bei Win64 Windows/SysWOW64 und dann ggf. in allen Pfaden die bei dir in der Systemvariable PATH abgelegt wurden.

Wenn dann eine davon älter ist und dort die Funktion nicht vorhanden war, oder mit anderen Parametern aufgerufen wurde, dann funktioniert es nicht.
Wenn du keine Anwendung hast die aktuell mit einer dir nicht bekannten Version der dll funktioniert, dann würde ich das alles mal aufräumen. D.h. alle alten Versionen der dll die wo auch immer liegen löschen. Und dann würde ich mich entscheiden wie du den Ablageort der dll handhaben willst, also ob im Programmverzeichnis der Excel-Datei, ob im Windows Systemverzeichnis oder an ganz anderer Stelle mit anpassen der PATH Variable. Ich würde erstes machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab das ganze mal auf einen komplett neu aufgesetzten PC probiert, wo keine Libnodave.DLL zuvor gespeichert war.

Das gleiche Problem.

Sollte ich ggf. mal die neueste Version von Libnodave runterladen ?
 
Hallo Thomas,

es funktioniert jetzt!

Habe die Libnodave.dll geupdated.
Jetzt läuft alles wie geschmiert :rolleyes:

Vielen Dank für deine Hilfe.

Grüße aus der USA
 
Zurück
Oben