Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Delphi DLL und Aufruf in Excel VBA

  Alt 9. Jan 2018, 17:04
exports ByRef nicht ByVal
sonst bekommst du Stack Probleme in VB

und keinen WideString sondern PAnsiString\PAnsiChar.

Danach kannst du den Pointer bzw.. den String in VB auf dieser weise auslesen.

Code:
Public Function VBStrFromAnsiPtr(ByVal lpStr As Long) As String

Dim bStr() As Byte
Dim cChars As Long

    On Error Resume Next
        ' Get the number of characters in the buffer
        cChars = lstrlen(lpStr)
        If cChars Then
            ' Resize the byte array
            ReDim bStr(0 To cChars - 1) As Byte
            ' Grab the ANSI buffer
            Call CopyMemory(bStr(0), ByVal lpStr, cChars)
        End If
        ' Now convert to a VB Unicode string
        VBStrFromAnsiPtr = StrConv(bStr, vbUnicode)

End Function
"QRgenerator.dll"
sollte reichen.. solange die Datei sich im Anwendungspfad befindet.
Wenn du Probleme beim debuggen hast dann sorge dafür das sich die DLL zusätzlich noch im Pfad der VBA.exe befindet.
Sonst könnte es sein das diese nicht gefunden wird.

ops.. sehe gerade das du den string aus VBA schicken willst ok dann kannst du einiges in meinem Beitrag ignorieren.

gruss

Geändert von EWeiss ( 9. Jan 2018 um 18:09 Uhr)
  Mit Zitat antworten Zitat