Na ja zu testen ist da nix..
Wäre vielleicht sinnvoll wenn du auch den VBA Quelltext hochladen würdest.
Danach könnte ich mir das mal anschauen.
Habe keine Lust das alles selbst von Hand zu machen.
Zitat:
übergib doch die Strings auf einmal mit einem definierten Trenner (#9 z.B.)
Er sollte überhaupt keinen String verwenden sondern PAnsiChar oder vergleichbares.. meine Meinung.
Und ja ein Trenner wäre hier am sinnvollsten mache ich auch nicht anders.
Helfen könnte dann so etwas..
Code:
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" ( _
ByVal lpString As Long _
) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
ByRef Destination As Any, _
ByRef Source As Any, _
ByVal length As Long _
)
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
Bsp.
Code:
Dim mylist As String
Dim LngPointer As Long
Dim IntI As Integer
Dim uB As Integer
Dim alist() As String
LngPointer = MeineVbaFunction(MeinDelphiPAnsiChar As Any include Delemiter und Rückgabe As Long) und auf der Delphi Seite als PAnsiChar
mylist = VBStrFromAnsiPtr(LngPointer)
alist = Split(mylist, ",")
If mylist > "" Then
uB = UBound(alist)
For IntI = 0 To uB
list.AddItem alist(IntI)
Next
End If
gruss