CSV einlesen; Probleme bei Arraygröße

  • [autoit]

    $file = FileOpen("empfaenger.csv",0)
    $string = (FileReadLine($file,2))
    $input = StringSplit($string,",",1)
    $person = $input[1]
    $empfaenger = $input[2]
    $region = $input[3]

    [/autoit]

    So möchte ich eine CSV einlesen. Funktioniert auch einwandfrei, wenn ich das direkt über Scite -> Go mache funktioniert es. Auch wenn ich es in eine EXE packe funktioniert es. Möchte ich es allerdings klassisch ausführen mit AutoIT kommt folgende Fehlermeldung:

    [autoit]

    Line 17(....):
    $empfaenger = $input[2]
    $empfaenger = ^ERROR

    [/autoit][autoit][/autoit][autoit]

    Error: Array variable has incorrect number of subcripts or subscript dimension range exceeded

    [/autoit]

    Habe jetzt schon diverse Dinge versucht, aber wenn lässt sich der Fehler höchstens verschieben. Eigtl kann es ja kein richtiger Fehler sein, denn es funktioniert ja.
    Hat von euch jmd. Ideen?

    MfG

    • Offizieller Beitrag

    Errorhandling sollte in jedem Script vorhanden sein.
    Angefangen mit Deiner Zeile 1, solltest Du gleich prüfen, ob $file auf wirklich ein Filehandle (Wert <> -1) ist.
    Du gibst dort nämlich einen relativen Pfad an. Relativ zum WorkingDir. Einige AutoIt-Befehle ändern das WorkingDir nach dem Aufruf, sodass der Pfad evtl. nicht mehr stimmt und es somit zu der obigen Fehlermeldung kommt.
    Außerdem sollte eine geöffnetet Datei unbedingt auch wieder geschlossen werden (FileClose), weil die Datei ansonsten gelockt ist.

  • _FileReadToArray unterstützt in der aktuellen AutoIt Version auch CSV-Dateien.