BSTR-String auswerten aus fremd dll

Hallo; Das einbinden der fremd dll per VBA in Access 2010 funktioniert einwandfrei. Wie kann man den BSTR-String in einen auswertbaren String umwandeln ? Ich habe schon einige Ansätze probiert, aber ohne Erfolg.

Hallo; Das einbinden der fremd dll per VBA in Access 2010
funktioniert einwandfrei.

welche?

Wie kann man den BSTR-String

was ist BSTR?

in einen auswertbaren String umwandeln ?

das steht in der Beschreibung der DLL

Ich habe schon einige Ansätze probiert, aber ohne Erfolg.

welche?

Grüße aus Rostock
Wolfgang
(Netwolf)

Danke für die schnelle Antwort Netwolf, kann leider erst heute antworten.Die dll nennt sich „Exchange.dll“ aus dem Programm Caliper2PC. Ich benötige 5 Werte die ich nach Tasten druck (Befehl21_Click()) nacheinander von Exchange.dll abfrage.
Wenn der Messschieber (GetChannel1) nicht angeschlossen bzw. nicht initalisiert kommte die Meldung „No Server“. Aber beim nächsten Tastendruck erscheinen nur noch Zahlen, obwohl die selbe Meldung erscheinen sollte. Daher gehe ich davon aus, das es Problem mit dem übergeben Wert ist. Ich hoffe ich konnte das Problem erklären.
Hier ist mein VBA:
Option Compare Database
Option Explicit

Private Declare Function GetChannel1 Lib „Exchange.dll“ () As String
Dim zaehlen As Integer

Private Sub Befehl21_Click()
zaehlen = zaehlen + 1
If zaehlen = 1 Then
Me.Gehäuse_0_Grad.Value = GetChannel1
ElseIf zaehlen = 2 Then
Me.Gehäuse_90_Grad.Value = GetChannel1
ElseIf zaehlen = 3 Then
Me.Bremse_0_Grad.Value = GetChannel1
ElseIf zaehlen = 4 Then
Me.Bremse_45_Grad.Value = GetChannel1
ElseIf zaehlen = 5 Then
Me.Bremse_90_Grad.Value = GetChannel1
Else
zaehlen = 0
End If

End Sub
Danke im voraus

N’abend,

Wenn der Messschieber (GetChannel1) nicht angeschlossen bzw.
nicht initalisiert kommte die Meldung „No Server“.

wo? wie?

Aber beim
nächsten Tastendruck erscheinen nur noch Zahlen, obwohl die
selbe Meldung erscheinen sollte.

vielleicht wurde er automatisch initalisiert?

Daher gehe ich davon aus, das es Problem mit dem übergeben Wert ist.

du meinst den Wert den du von der Funktion GetChannel1 bekommst?

Ich hoffe ich konnte das Problem erklären.

hmm, ich versuche dir zu folgen…

Hier ist mein VBA:

Option Compare Database
Option Explicit

Private Declare Function GetChannel1 Lib "Exchange.dll" () As String
Dim zaehlen As Integer

'wo wird zaehlen global definiert und mit 0 vorbelegt?

Private Sub Befehl21\_Click()
Dim Dummy

Dummy = GetChannel1 'Informationen holen

'hier prüfen was bei GetChannel1 raus kommt
if Dummy = "No Server" then 
 'Initialisierung durchführen
 zaehlen = 0 'Zähler zurücksetzen
 exit sub 'und raus hier
end if

zaehlen = zaehlen + 1

'ich würde select case verwenden:

select case zaehlen
 case 1
 Me.Gehäuse\_0\_Grad = Dummy'.Value ist überflüssig
 case 2
 Me.Gehäuse\_90\_Grad = Dummy'.Value ist überflüssig
 case 3
 Me.Bremse\_0\_Grad = Dummy'.Value ist überflüssig
 case 4
 Me.Bremse\_45\_Grad = Dummy'.Value ist überflüssig
 case 5
 Me.Bremse\_90\_Grad = Dummy'.Value ist überflüssig

 'Hier zaehlen auf 0 setzen!!
 zaehlen = 0

 case else
 msgbox "Fehler beim Zählen: " & zaehlen
 'Hier zaehlen wieder auf 0 setzen!!
 zaehlen = 0
 
end select 

End Sub

Grüße aus Rostock
Wolfgang
(Netwolf)