VB /Excel VBA: Array vergrößern

Hi Alex,

ich habe es doch noch mal mit Strings versucht, klappt und stürzt auch nicht ab.

Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" \_
 (pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Dim Arr() As String
Dim Ze() As Long

Private Sub Command1\_Click()
 Dim i As Integer, m As Long, Po As Long, Txt As String
 Txt = "AAAAAAAAAAAAAAAAAAAAA"
 Po = 4
 ReDim Preserve Arr(UBound(Arr) + 1)
 ReDim Preserve Ze(UBound(Arr))
 Arr(UBound(Arr)) = Txt
 CopyMemory Ze(0), ByVal VarPtr(Arr(0)), (UBound(Arr) + 1) \* 4
 m = Ze(UBound(Ze))
 CopyMemory Ze(Po + 1), Ze(Po), (UBound(Ze) - Po) \* 4
 Ze(Po) = m
 CopyMemory ByVal VarPtr(Arr(0)), Ze(0), (UBound(Arr) + 1) \* 4
 List2.Clear
 For i = 0 To UBound(Arr)
 List2.AddItem Arr(i)
 Next
End Sub

Private Sub Form\_Load()
 Dim r As Integer, p As Integer, n As Integer, i As Integer, zl As String
 ReDim Arr(10)
 ReDim Ze(10)
 For i = 0 To 10
 zl = ""
 n = Int(Rnd(1) \* 10) + 1
 For p = 1 To n
 r = Int(Rnd(1) \* 26) + 65
 zl = zl + Chr(r)
 Next
 Arr(i) = zl
 List1.AddItem zl
 Next
End Sub

Der Umweg über das zweite Array ist nötig. Wenn ich das richtig verstehe weigert sich VB mit zweí verschiedenen Zeigern auf die selbe Stelle im Speicher zu zeigen. Schritt für Schritt an den Zeigern zu arbeiten geht also nicht, aber das ganze Array auf einmal überschreiben geht.

Gruß Rainer