_FileListToArray problem

  • Hallo,

    ich habe das Problem, dass mein Skript nicht ganz funktioniert , es soll die Dateinamen im Ordner auslesen, sie anschließend öffnen, lesen und in die Console schreiben.

    Hier mal mein Versuch :

    [autoit]

    #include <File.au3>
    #include <Array.au3>
    $Files = _FileListToArray(@ScriptDir)
    For $i = 1 to Ubound($Files[0])
    $Open = FileOpen($Files[$i])
    $Read = FileRead($Open)
    ConsoleWrite($Read)
    FileClose($Open)
    Next

    [/autoit]

    Mit freundlichen Grüßen,

    Shizoid

  • UBound($Files[0]) ... fällts dir auf ;)

    [autoit]

    #include <File.au3>
    #include <Array.au3>
    $Files = _FileListToArray(@ScriptDir)
    For $i = 1 to $Files[0]
    $Open = FileOpen($Files[$i])
    $Read = FileRead($Open)
    ConsoleWrite($Read)
    FileClose($Open)
    Next

    [/autoit]

    Grüße ;)

    Grüße Yaerox

    Grüne Hölle

  • Entweder du machst es so:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <Array.au3>
    $Files = _FileListToArray(@ScriptDir)
    For $i = 1 to Ubound($Files)-1
    $Open = FileOpen($Files[$i])
    $Read = FileRead($Open)
    ConsoleWrite($Read)
    FileClose($Open)
    Next

    [/autoit]


    oder so:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <Array.au3>
    $Files = _FileListToArray(@ScriptDir)
    For $i = 1 to $Files[0]
    $Open = FileOpen($Files[$i])
    $Read = FileRead($Open)
    ConsoleWrite($Read)
    FileClose($Open)
    Next

    [/autoit]

    Ich persönlich würde Variante 1 benutzen, da nicht alle Arrays im ersten Element die Anzahl der Elemente haben

    UNPLEASANT SPOILER

    You just lost the game!


  • Ich persönlich würde Variante 1 benutzen, da nicht alle Arrays im ersten Element die Anzahl der Elemente haben

    Recht hast du, allerdings nutzt er die UDF FileListToArray ja so oder so mit default Parametern sprich das erste bleibt die Anzahl von daher ^^

    Ich würde sagen wichtiger ist sich das zu merken und den Fehler nicht nochmal zu machen ^^

    Grüße

    Grüße Yaerox

    Grüne Hölle

    • _FileListToArray() liest Dateien UND Ordner ein... Das ist soweit schlimm weil FileOpen dann so oder so nichts zurück liefern würde und somit die anderen Funktionen nicht laufen. Das bricht aber auch nicht das Script ab. Du kannst es theoretisch so lassen, allerdings solltest du den dritten Parrameter verwenden. Also sieht der Funktionsaufruf folgendermaßen aus: _FileListToArray(@ScriptDir, '*', 1)
    • Was soll das hier >> "Ubound($Files[0])" << werden? (Den gleichen Fehler habe ich vor kurzen auch gemacht :D) Entweder du liest das Array ein >> "UBound($Files) - 1" << ODER verwendest die Anzahl der gefundenen Dateien in $Files[0]!

    LG. Make :)


    €dit:
    Würde mal sagen, hab bischen zu lange getippt ... :whistling:

    Einmal editiert, zuletzt von Yjuq (8. April 2013 um 16:50)

  • Recht hast du, allerdings nutzt er die UDF FileListToArray ja so oder so mit default Parametern sprich das erste bleibt die Anzahl von daher ^^

    Ich würde sagen wichtiger ist sich das zu merken und den Fehler nicht nochmal zu machen ^^

    Grüße

    Der Tipp war ja auch nicht speziell für diese Funktion sondern für den allgemeinen Umgang mit Arrays gedacht :)

    UNPLEASANT SPOILER

    You just lost the game!