# LibnoDave daveUseResult Hilfe VBA



## AloisKnepp (1 Januar 2019)

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 USA
	

		
			
		

		
	

Anhang anzeigen Versuch Lesen.zip


----------



## Thomas_v2.1 (2 Januar 2019)

Kannst du den entsprechenden Code als Text einstellen?
Ich möchte nicht unbedingt eine fremde Excel-Datei mit aktivierten Makros starten ;-)


----------



## AloisKnepp (2 Januar 2019)

Hallo Thomas,

Danke für die schnelle Antwort!

Der Code lautet:


```
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


----------



## Thomas_v2.1 (2 Januar 2019)

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

Dort sollte eine Zeile

```
Private Declare Function daveUseResult Lib "libnodave.dll" (ByVal dc As Long, ByVal rs As Long, ByVal resultNumber As Long) As Long
```
vorhanden sein.


----------



## AloisKnepp (2 Januar 2019)

Ja habe ich.

Das ist der Code dazu.


```
'
' 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:


```
'
Private Declare Sub daveDumpPDU Lib "libnodave.dll" (ByVal pdu As Long)
'
```


----------



## Thomas_v2.1 (2 Januar 2019)

Hast du vielleicht irgendwo eine ältere Version der libnodave.dll abgelegt, z.B. im Windows/System32 Verzeichnis?


----------



## AloisKnepp (2 Januar 2019)

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 ?


----------



## Thomas_v2.1 (2 Januar 2019)

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.


----------



## AloisKnepp (2 Januar 2019)

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 ?


----------



## Thomas_v2.1 (2 Januar 2019)

Das ist bestimmt sinnvoll. Die letzte dll aus der 0.8.5.1 ist vom 17.1.2014. Damit funktioniert deine Excel-Datei zumindest prinzipiell.


----------



## AloisKnepp (2 Januar 2019)

Hallo Thomas,

es funktioniert jetzt!

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

Vielen Dank für deine Hilfe.

Grüße aus der USA


----------

