VBS ReDim eines mehrdimensionalen Arrays in Schleife schlägt fehl
Hallo zusammen,
habe erneut ein kleines Problemchen mit einem VBScript von mir.
Kurz zum Hintergrund des Ganzen:
Es geht um eine Auswertung von .txt-Logfiles, welche in ein .xls-File geschrieben werden sollen.
In den Textdateien werden Useranmeldungen von verschiedenen Rechnern geloggt.
Der Inhalt sieht z.B. so aus:
Diese sollen nun in eine Excel-Arbeitsmappe in getrennten Spalten geschrieben werden. Dazu habe ich mir ein Script gebaut, habe aber ein Problem mit einem Array in dieser Schleife:
Hinter "file" verbirgt sich das genannte Textfile.
Allem Anschein nach, gibts ein Problem mit der "Redim" Anweisung mit der Variable "i". Lege ich die Größe des Arrays manuell fest funktioniert alles tadellos, ansonsten gibts ein "Index außerhalb des gültigen Bereichs", sobald die Variable "i" bei dem Wert "1" angekommen ist, sprich ab dem zweiten Durchlauf der Schleife.
Kann mir jemand erklären wieso?
gruß
LiNDi
habe erneut ein kleines Problemchen mit einem VBScript von mir.
Kurz zum Hintergrund des Ganzen:
Es geht um eine Auswertung von .txt-Logfiles, welche in ein .xls-File geschrieben werden sollen.
In den Textdateien werden Useranmeldungen von verschiedenen Rechnern geloggt.
Der Inhalt sieht z.B. so aus:
User1;Pc001;12:15:22
User4;Pc002;17:18:01
User12;Pc003;17:30:45
Diese sollen nun in eine Excel-Arbeitsmappe in getrennten Spalten geschrieben werden. Dazu habe ich mir ein Script gebaut, habe aber ein Problem mit einem Array in dieser Schleife:
i=0
Do While Not (file.atEndOfStream)
Text = file.ReadLine
Redim Preserve Arr(i, 2)
Arr2 = Split(Text, ";")
Arr2(i, 0) = Arr2(0)
Arr2(i, 1) = Arr2(1)
Arr2(i, 2) = Arr2(2)
i = i + 1
Loop
Hinter "file" verbirgt sich das genannte Textfile.
Allem Anschein nach, gibts ein Problem mit der "Redim" Anweisung mit der Variable "i". Lege ich die Größe des Arrays manuell fest funktioniert alles tadellos, ansonsten gibts ein "Index außerhalb des gültigen Bereichs", sobald die Variable "i" bei dem Wert "1" angekommen ist, sprich ab dem zweiten Durchlauf der Schleife.
Kann mir jemand erklären wieso?
gruß
LiNDi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95770
Url: https://administrator.de/contentid/95770
Ausgedruckt am: 25.11.2024 um 16:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo DemseinAdmin!
Du kannst ReDim nur auf die letzte Dimension anwenden, zB
Je nachdem, was Du in weiterer Folge noch mit dem Array vorhast, könntest Du es auch gleich so versuchen:
Grüße
bastla
Du kannst ReDim nur auf die letzte Dimension anwenden, zB
Redim Preserve Arr(2, i)
Je nachdem, was Du in weiterer Folge noch mit dem Array vorhast, könntest Du es auch gleich so versuchen:
Text = Split(file.ReadAll, vbCrLF)
For i = 0 To UBound(Text)
Text(i) = Split(Text(i), ";")
Next
'Demo für ersten Satz
For i = 0 To UBound(Text(0))
WScript.Echo Text(0)(i)
Next
Grüße
bastla