Array variable has incorrect number of subscripts...

  • Hallo erstmal, ich programmiere gerade ein Script der aus einem Ordner die Anzahl der ".edx" Dateien zählen soll, die klappt auch soweit. Dann soll ein Array erstellt werden welches die Pfade zu den Dateien speichert, dann sollen die Dateien mit Fileopen und noch einem neuen Array gespeichert werden. Da die ".edx" Dateien immer 5 Zeilen haben folgt nun eine For Schleife mit 5 Durchgängen und dann werden mir Fileread die Zeilen abgearbeitet und dann kommt der Fehler:

    "C:\Users\user\Desktop\Projekt\Programmieren\LogIn\ReadFiles.au3" (44) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    $FileRead[$x][$h] = FileReadLine($FileOpen[$x], $count)
    ^ ERROR

    Hier mein Script:

    Die Dateien im Ordner fangen mit dem Index 0 an also -> 0.edx, 1.edx, 2.edx!


    Über eine Lösung des Problems wäre ich sehr Dankbar! ^^

    P.S: Nicht über die vielen Includes wundern das ist so gewollt! :D

  • Und in der äußeren Schleife machst du es genau anders herum: Das letzte Element von $dir wird nicht mit in die Schleife genommen.
    Hingegen wird das erste Element (in dem Fall die Anzahl der Elemente) im ersten Schleifendurchlauf als Datei behandelt.

  • Generell würde ich empfehlen immer mit UBound($array) zu arbeiten. Ich finde, das mit der Anzahl im ersten Eintrag ist eher unnötig... Wenn ich eine so große Schleife habe, dass der UBound() aufruf ne Rolle speilt speicher ich das eben extra in ne variable... aber immer nen Wert in ein Datenarray zu packen, der da eigentlich nichts verloren hat, weil er keinen Datensatz darstellt finde ich einfach nur nervig. Insbesondere, wo das nur bei manchen Funktionen der Fall ist. Ich finde, dass sollte man komplett rausnehmen.

  • Jetzt habe ich das Problem, dass das Programm erst funktioniert wenn ich datei 0.edx, 1.edx, 2.edx, 3.edx und 4.edx in dem Ordner drinne habe. Wenn es weniger als diese 5 Dateien sind gibt er mir nach wie vor den gleichen Fehler aus:

    "C:\Users\user\Desktop\ClashSA\Programmieren\LogIn\ClashSA loader.au3" (427) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    $FileReadArray[$h]= FileReadLine($FileOpenArray[$x], $hAdd)
    ^ ERROR


    $dir[0] gibt die Anzahl der in dem Ordner befindlichen Dateien an.
    Ich muss irgendwo in den For schleifen einen Fehler gemacht haben, eventuell ist es auch weil meine Dateien mit dem Index 0 beginnen..

    Die Arrays habe ich 2 mal Global erstellt weil die Funktion durch ein Refresh immer wieder ausgeführt werden muss..

    Freue mich über jede Unterstützung.. :)

  • Was gibt dir denn

    AutoIt
    ConsoleWrite(UBound($FileReadArray) - 1 & @CRLF)
    For $h = 0 To 4 Step 1;normal To 3 aber wegen der 5. Zeile
    		$hAdd = $h + 1
    		$FileReadArray[$h]= FileReadLine($FileOpenArray[$x], $hAdd)
    		$BotInfoLines[$x][$h] = $FileReadArray[$h]
    ;~ 		MsgBox(0, $count, $BotInfoLines[$x][$h] & "[" & $x & "]" & "[" & $h & "]" & @CR & $FilePathArray[$x]);only for debugging
    	Next

    aus?

    Btw, die Begriffe "Bot*" sind nicht besonderns geschickt gewählt.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Was gibt dir denn

    AutoIt
    ConsoleWrite(UBound($FileReadArray) - 1 & @CRLF)
    For $h = 0 To 4 Step 1;normal To 3 aber wegen der 5. Zeile
    		$hAdd = $h + 1
    		$FileReadArray[$h]= FileReadLine($FileOpenArray[$x], $hAdd)
    		$BotInfoLines[$x][$h] = $FileReadArray[$h]
    ;~ 		MsgBox(0, $count, $BotInfoLines[$x][$h] & "[" & $x & "]" & "[" & $h & "]" & @CR & $FilePathArray[$x]);only for debugging
    	Next


    aus?

    Btw, die Begriffe "Bot*" sind nicht besonderns geschickt gewählt.

    Nun gibt er mir in der Konsole eine "4" aus. Wobei es in der Datei Struktur ein wenig komisch aussieht.

    [Blockierte Grafik: http://i.imgur.com/aXW65Mc.png]
    Jetzt heißen Datei 0.edx, 1.edx, 2.edx, 3.edx und 4.edx nicht mehr 0.edx, 1.edx, 2.edx, 3.edx und 4.edx sondern 0.edx, 2.edx, 4.edx, 6.edx und 7.edx..
    Das ist echt alles komisch, zu mal ich mir das nicht erklären kann warum es ab 6 Dateien aufeinmal klappt..


  • Man sollte i.d.R. nie Global in Funktionen verwenden!

    Ich sehe ein Array mit dem Inhalt der *.edx Dateien. Ich habe nur den Pfad auf C:\Temp umgelegt.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯