iteriert werden kann. Genau wie die Frage sagt. Ich möchte in der Lage sein, eine Reihe von Strings in einigen VBA-Code zu machen, in diesem Code möchte ich ihnen eine gewisse Länge geben. Dann, wie würde ich sie in eine C++ - DLL übergeben, in der DLL möchte ich eine Zeichenfolge in jedem Element speichern und diese Elemente von der VBA später zugänglich machen. Ich habe dies bereits für eine einzelne Zeichenfolge und für ein Doppel-Array wie folgt getan.Wie erstellt man ein Array von Strings in VBA/Excel und sendet es an eine C++ - DLL, so dass es durch in der DLL
Dim myStr As String * sizeConst
Dim dataArray() As Double
ReDim dataArray(0 To (arrayLength - 1)) As Double
Anschließend übergibt sie an eine DLL aus der VBA.
Public Declare Function myFunc _
Lib "PathToDLL.dll" _
(myStr As String, ByVal sizeConst As Integer, dataArray As Double, ByVal arrayLength As Long) As Long
Dann in der DLL kann ich jedes Element in der Doppel-Array durchlaufen. Ich weiß jedoch nicht, wie man das für ein String-Array macht. Ich bin nicht sicher über die tatsächliche Speichergröße der Strings, die ich von der VBA übergeben würde, wären sie von der Größe sizeConst + 1? Ich muss das wissen, um zu wissen, wie viel ich erhöhen sollte, um zum nächsten String-Element zu gelangen. Kann mir jemand zeigen, wie man ein String-Array in VBA mit einer konstanten Länge für jedes Element deklariert. Dann wie dieses Array an die DLL übergeben wird und wie das nächste Element im String-Array in der DLL inkrementiert wird.
Vielen Dank für meine Antwort.Wenn die Antwort auf die Frage: "Wie erstellt man ein Array von Strings mit fester Größe?" Nicht Ihren Kriterien entspricht, müssen Sie genauer sein und die richtigen Details zu Ihrem Problem angeben. –
@MaciejLos Der wichtige Teil ist "Dann, wie würde ich sie in eine C++ DLL übergeben". Weitere Informationen finden Sie unter https://stackoverflow.com/questions/44396538/vba-excel-and-c-dll-specifical-problems-with-strings#comment76262029_44396538. – GSerg
@GSerg, Dies ist der zweite Teil der Frage. Ich habe diese Information zur Verfügung gestellt: 'Beachten Sie, dass Ihre DLL als Eingabe erwartet ** myStr As String **, nicht ein Array von Strings, wegen der Funktionsdeklaration. Der Trick ist die Fähigkeit, eine Frage zu stellen! –