Ergebnis von Stringsplit in 2D Array schreiben

  • Hallo Gemeinde,

    ich teile die Zeilen einer Textdatei mit StringSplit. Diese enthalten je die BiosOption und deren Wert mit (z.B. System Management Command, Enable)

    Code
    While True
    		Local $line = FileReadLine($file)
    		If @error <> 0 Then
    			MsgBox($MB_ICONERROR, "@Error", @error, 5)
    			ExitLoop
    		EndIf
    		Local $a_split = StringSplit($line, ", ", 3)
    	WEnd

    Ergebnis einer Zeile:

    Row|Col 0
    # 0|System Management Command
    # 1|Enable

    Wie schreibe ich am elegantesten die beiden Werte in ein 2D Array? Ich dachte an:

    Code
    local $nCount 0
    .
    While True
    .
    		_ArrayAdd($optionsArray[$nCount][0], $a_split[0])
    		_ArrayAdd($optionsArray[$nCount][1], $a_split[1])
    		$nCount += 1
    WEnd

    Da bringt er dann aber immer ein "Array variable has incorrect number of subscripts or subscript dimension range exceeded"

  • Das kannst du alles - vom Einlesen bis zur 2D-Aufbereitung mit einem Befehl auf einmal abhandeln: _FileReadToArray()

    Bei dir dann ungefähr so:

    AutoIt
    #include <File.au3>
    
    Global $a2D
    _FileReadToArray("C:\Dein\Pfad\Datei.txt", $a2D, $FRTA_ENTIRESPLIT, ", ")

    Bzw. als Trennzeichen "|" - das widerspricht sich noch in deinem Beispiel.

    Einmal editiert, zuletzt von AspirinJunkie (24. April 2024 um 12:38)

  • Hallo, das Problem, dem Sie begegnen, liegt darin, dass Sie versuchen, das Array $optionsArray manuell zu inkrementieren, während Sie die _ArrayAdd-Methode verwenden, die das Array automatisch inkrementiert. Hier ist ein Code-Schnipsel:

    AutoIt
    Local $optionsArray[0][2]
    Local $a_split = StringSplit($line, ", ", 3)
    _ArrayAdd($optionsArray, $a_split[0] & "|" & $a_split[1])
  • Hallo Aspirinjunkie,

    blöd wenn man den Wald vor lauter Bäumen nicht mehr sieht. :Face:Klar, das hatte ich nicht im Focus. Danke für den Tipp. Funzt prima:klatschen::party:


    @ Numeric: Danke für die Idee...