VisualBasic Script - Mit Split Befehl in Array schreiben

KaeTuuN

Rear Admiral
Registriert
Okt. 2002
Beiträge
5.304
Hallo,
ich bins mal wieder... :)

Ich machs kurz, Problem:
1D-Array mit Strings soll diese via Split in ein 2D-Array schreiben, nur leider scheint dies nicht zu funktionieren, weiß jemand wie es geht, oder kennt eine Alternative?

Beispiel:
For i = 0 to 48
DataSplit(i,0) = Split(Datei(i))
Next

Mfg Kae
 
Ich kenne mich mit VB nicht aus, aber es müßte nach meinem Dafürhalten heißen:

Code:
DataSplit(i) = Split(Datei(i))
 
Ok, dann mußt du wohl das Ergebnis von Split(...) zuerst in einer Variablen zwischenspeichern und dann in einer Schleife jedes Element davon einzeln in DataSplit eintragen.
 
Code:
For j = 1 to 48
	
	SplitErg = Split(Datei(j))
	
	For k = 0 to 3
		DataSplit(j,k) = SplitErg(k) [COLOR="Red"]<- Fehlerzeile[/COLOR]
	Next
	
	DataSplit(j,4) = Datei(j)
	
Next

Fehler: "Index außerhalb des gültigen Bereichs: '1'"
Warum? Oo
Im Array 'Datei()' stehen die richtigen Werte. Das Array SplitErg wird richtig gefüllt.
Könnte es Probleme geben, wenn ein Teil der Werte eine Zahl ist?

Mfg Kae
 
@@@ "Index außerhalb des gültigen Bereichs" @@@

Du sprichst einen Bereich außerhalb des Arrays an.

Bitte mehr code von der Funktion posten dann ist es leichter mit der Analyse.

lg
Ergänzung ()

http://vb-tec.de/arrmix.htm

schau mal hier
 
Code:
Dim DataSplit(100,10)
Pfad = fso.GetFolder(".")
  For Each DateiX In oFiles
	Datei(i) = DateiX.Name 
    i = i + 1
  Next

For j = 1 to 48
	SplitErg = Split(Datei(j))
	For k = 0 to 3
		DataSplit(j,k) = SplitErg(k)
	Next
	DataSplit(j,4) = Datei(j)
Next

Das ist eigentlich alles an Code, der Rest sind derzeit nur Deklarationen.
Wie auch eben schon geschrieben werden die anderen Variablen auch richtig gefüllt.
Außerhalb meines Arrays kann ich mich so eigentlich auch nicht befinden, da sie mehr als ausreichend groß sind.

Mfg Kae

€: @Stone1978: Auf der Seite sind zwar gute Beispiele für Arrays, helfen mir nur leider in dem Fall nicht weiter, da wohl eher der Split Befehl ein Problem damit hat, wenn ich ihm sage, dass er in ein bereits vorhandenes Array schreiben soll... :(
 
Zuletzt bearbeitet:
du solltest mehr auf Boundaries achten und nicht einfach Dim x(1000,1000) machen,
dafür gibts Redim, kannst ja mit UBound(oFiles) die exakte Anzahl kriegen.

Wenn oFiles > 100 geht dein Script nicht mehr

Da fehlt auch Code, woher kommt oFiles?
Wer hier korrigieren kann ohne Deklaration ^^ naja, der kann wohl hellsehen :D

Zweite For fängt bei 1 To 48 an und die innere Schleife nur bei 0 To 3.
Davor hast aber i = i +1, ist jetzt i am Anfang 0 oder 1.

Das reichlich kompliziert, was auch immer du erreichen willst, geht garantiert einfacher.

Anyway, so gehts bei mir:

Code:
Dim arr2D(10,10)
Dim arr1D(10)

'nur zum testen befüllen mit splitbaren string
For i=0 To Ubound(arr1D)
	arr1D(i) = i*100 & "," & i*10 ' "100,10"; "200,20"...
Next


msgbox arr1D(4) '"400,40"

For i=0 To Ubound(arr1D)
	arrSplit = Split(arr1D(i), ",")
	For j=0 To Ubound(arrSplit)
		arr2D(i,j) = arrSplit(j)
	Next
Next

msgbox arr2D(4, 0) '400 
msgbox arr2D(4, 1) '40
 
Zurück
Oben