AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

AnsiStringArray aus DLL an Excel-VBA

Ein Thema von Andreas13 · begonnen am 25. Apr 2019 · letzter Beitrag vom 10. Mai 2019
 
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: AnsiStringArray aus DLL an Excel-VBA

  Alt 26. Apr 2019, 05:56
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

Geändert von EWeiss (26. Apr 2019 um 06:34 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz