Dateiliste in Array => Einzelne Dateien aus Array bearbeiten, wie Array auslesen?

  • Hallo Leute,

    ich hab anscheinend mal wieder ein kleines Verständnisproblem.

    Ziel:

    - Dateiliste eine wählbaren Ordners in Array einlesen
    - Dateien nacheinander bearbeiten (for-Schleife?)

    Soweit bin ich bisher gekommen:

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

    Select
    ; "Datei öffnen Dialog" um Quellordner auszuwählen
    Case $msg = $openbutton
    $quellordner = FileSelectFolder("C:\", "HPGL-Dateien (*.gl2)")


    Global $FileList=_FileListToArray($quellordner, '*.gl2', 0)

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

    If (Not IsArray($FileList)) and (@Error=1) Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
    EndIf

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

    ; jetzt array auslesen

    _ArrayDisplay($FileList, "$FileList")

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

    For $i = 0 to Ubound($FileList) -1
    $Test = ($FileList[$i])

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

    ConsoleWrite($Test)

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

    ; hier sollen die dateien einzeln bearbeitet werden

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

    Next

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

    Mein Problem ist, dass in der Testausgabe von ConsoleWrite immer eine 2 am Anfang steht und der Pfad zum Ordner fehlt (ich denke ich werde den für die Bearbeitung brauchen, sonst werden wohl die Dateien nicht gefunden..)

    Jemand ne Idee?

    2 Mal editiert, zuletzt von melman01 (8. Februar 2013 um 10:18)

  • Hi,

    also bei mir funktionierts:

    [autoit]

    #include <file.au3>
    #include <array.au3>

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

    Local $return

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

    $ary = _FileListToArray(@ScriptDir)

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

    ;_ArrayDisplay($ary)

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

    for $i = 1 to $ary[0]
    $return &= $ary[$i] & @CRLF
    Next

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

    MsgBox(0,"",$return)

    [/autoit]

    €dit: und deine 2 steht vermutlich da, weil im Array 2 Einträge vorhanden sind und du $FileList[0] auch anzeigen lässt.

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • nachdem die "2" bereits gelärt ist:

    der Pfad zum Ordner fehlt (ich denke ich werde den für die Bearbeitung brauchen, sonst werden wohl die Dateien nicht gefunden..)

    Dieser wird allerdingsbenötigt, da aber _FileListToArray nur die Dateien ins Array speichert musst du dir den Pfad schon selbst im Skript merken und dann bei einem späteren Aufrufen einer Datei mit dazu nehmen:

    [autoit]

    For $i = 1 to $FileList[0]
    $Test = $quellordner&"\"&($FileList[$i])
    ConsoleWrite($Test)
    Next

    [/autoit]

    mfg autoBert

  • Wenn du dein Array selbst erzeugst dann sind natürlich im Element 0 nicht die Gesamten Elemente aufgelistet.
    Benutz hierfür Ubound (manchmal ist es in einer ForSchleife nötig Ubound(...)-1 zu verwenden)

    -

  • Nachid: er erstellt das Array ja mit Hilfe von _FilesListToArray(), und dort ist das erste Element die Anzahl der Elemente :D

    und wenn dus so willst, sollte er halt "for $i = 1 to ubound($ary)-1" machen (nicht die 0, denn die is ja standardmäßig mit der Zahl belegt)

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.