ID Programm zeigt Fehler bei Go

  • Hallo zusammen,

    habe hier ein kleines Tool um in einige meiner Datas noch eine Zeile und einen Eintrag oben einzufügen.
    Wenn ich es nun starten will kommt ein Fehler, welchen ich selber irgendwie nicht raus bekomme.

    Code:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    $List = _FileListToArray("E:\Datas ohne ID", "*", 1)
    For $i = 1 To $List [0]
    $hFile = FileOpen("E:\Datas ohne ID" & $List[$i], 0)
    $Read = FileRead($hFile)
    FileClose($hFile)
    $hFile = FileOpen("E:\Datas mit ID" & $List[$i], 2)
    $tmpsplit = StringSplit($Read, @CRLF)
    $Counter = 1
    For $k = 1 To $tmpsplit[0]
    If $tmpsplit[$k] = "" Then ContinueLoop
    If StringRight($tmpsplit[$k], 2) = ",*" Then
    $tmpsplit[$k] = StringTrimRight($tmpsplit[$k], 1)&"ID,*"
    EndIf
    If $tmpsplit[$k] = "*" Then
    $tmpsplit[$k] = StringFormat("%05d", $Counter) & @CRLF & "*"
    $Counter += 1
    EndIf
    FileWrite($hFile, $tmpsplit[$k]&@CRLF)
    Next
    FileClose($hFile)
    Next

    [/autoit]

    Fehler:

    Spoiler anzeigen
    [autoit]

    >"O:\AutoIt\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "G:\Datas mit ID\Id einfügen.au3" /UserParams
    +>11:32:05 Starting AutoIt3Wrapper v.2.1.2.9 Environment(Language:0407 Keyboard:00000407 OS:WIN_7/Service Pack 1 CPU:X64 OS:X64)
    >Running AU3Check (1.54.22.0) from:O:\AutoIt\AutoIt3
    +>11:32:06 AU3Check ended.rc:0
    >Running:(3.3.8.1):O:\AutoIt\AutoIt3\autoit3_x64.exe "G:\Datas mit ID\Id einfügen.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    G:\Datas mit ID\Id einfügen.au3 (10) : ==> Subscript used with non-Array variable.:
    For $i = 1 To $List [0]
    For $i = 1 To $List ^ ERROR
    ->11:32:06 AutoIt3.exe ended.rc:1
    >Exit code: 1 Time: 0.915

    [/autoit]

    Könnte bitte wer drüber sehen und wenn möglich mir den Fehler benennen / beheben Danke.

    Mfg Ghostleader

  • Du kannst versuchen nach dem _FileListToArray(...) eine If @error Überprüfung

    [autoit]

    $List = _FileListToArray(...)
    If Not @error Then
    For $i = 1 To $List [0]
    ...
    Next
    EndIf

    [/autoit]


    zu verwenden. Es sieht so aus als würde es den Pfad in deinem _FileListToArray(...) nicht geben!

  • Hallo zusammen,

    danke erstmal für eurer beider Antworten.

    Ich habe wie angeraten mal If Not @error Then und nun bringt er folgendes:

    Spoiler anzeigen

    >"O:\AutoIt\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "O:\Datas mit ID\Id einfügen.au3" /UserParams
    +>07:31:29 Starting AutoIt3Wrapper v.2.1.2.9 Environment(Language:0407 Keyboard:00000407 OS:WIN_7/Service Pack 1 CPU:X64 OS:X64)
    >Running AU3Check (1.54.22.0) from:O:\AutoIt\AutoIt3
    +>07:31:29 AU3Check ended.rc:0
    >Running:(3.3.8.1):O:\AutoIt\AutoIt3\autoit3.exe "O:\Datas mit ID\Id einfügen.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    +>07:31:30 AutoIt3.exe ended.rc:0
    >Exit code: 0 Time: 1.616
    cannot open O:\AutoIt\AutoIt3\SciTE\Lua\InsertFunctionHeader.lua: No such file or directory
    >Lua: error occurred while loading startup script


    Ich weiss nicht was er mit diesem Lua Script von mir will. Auch wenn ich dieses entferne bringt er den selben Fehler.

    Üprigens liegt die Data die er öffnen soll in genau dem angegebenem Pfad, sowie auch das Script.

    Mfg Ghostleader

    • Offizieller Beitrag

    InsertFunctionHeader.lua ist ein Tool von SciTE4AutoIt. Da hast du wohl den Aufruf für dieses Tool mit demselben Hotkey wie Run belegt?
    Auf jeden Fall hat das mit deinem Problem gar nichts zu tun.
    Nimm bitte ausschließlich folgenden Code in eine eigene Datei und führe dann sicherheitshalber über Menü:<Run> aus (nicht F5, falls da was hakt).

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    $List = _FileListToArray("E:\Datas ohne ID", "*", 1)
    ConsoleWrite('@error: ' & @error & @LF)

    [/autoit]

    Dann sind wir bei deinem Problem. Die Fehlerliste findest du in der Hilfe zu '_FileListToArray'.

  • Hallo Bugfix,

    also als Fehler zeigt er mir nun

    Spoiler anzeigen
    [autoit]

    >Running AU3Check (1.54.22.0) from:O:\AutoIt\AutoIt3
    +>10:48:22 AU3Check ended.rc:0
    >Running:(3.3.8.1):O:\AutoIt\AutoIt3\autoit3.exe "C:\Users\Ghostleader\Desktop\Test ID einfügen.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    @error: 1
    +>10:48:22 AutoIt3.exe ended.rc:0
    >Exit code: 0 Time: 0.707

    [/autoit]


    @error: 1 besagt laut Hilfe = Pfad nicht gefunden oder ungültig
    Dies verstehe ich nicht, denn genau dieser Pfad O:\Datas ohne ID ist ja vorhanden.

    Was soll das Tool eigentlich tun?

    Es soll auf den genanten Pfad zugreifen, öffnen und mich dann eine sich darin befindliche Data auswählen lassen.
    Ist dies geschehen, so soll es in die Horizontale Leiste vor das Symbol * (Zeile 2) die Buchstaben ID setzen und in alle Vertikalen Zeilen vor das Symbol * ein - einsetzen und eben anschliessend in einen Ordner
    namens O\Datas mit ID wieder ablegen, der ebenfalls genau so vorhanden ist.

    Aufbau Beispiel einer dieser .data :

    Spoiler anzeigen
    [autoit]

    2
    Name,exe,anzahl,*
    Testeintrag
    test
    15
    *
    Testeintrag 2
    testen
    156
    *

    [/autoit]

    Ich weiß wirklich nicht, warum er bei der Pfad Prüfung dieses Problem hat.

    Mfg Ghostleader

    • Offizieller Beitrag

    @error: 1 besagt laut Hilfe = Pfad nicht gefunden oder ungültig


    Bzw. keine Dateien in diesem Pfad gefunden (denn laut gesetztem Flag möchtest du ja alle Dateien in diesem Ordner auflisten). Hast du dort wirklich Dateien in diesem Pfad?
    Habe noch nie erlebt, dass die Funktion dann fehlschlägt.

    Kann es sein, dass du auf der falschen Fährte bist und nicht Dateien eines Ordners auflisten willst, sondern eine Datei öffnen möchtest und den Inhalt im Array anzeigen willst? Dann brauchst du _FileReadToArray().

  • Hallo,

    also Datein sind mehrere drin extra nochmal´s nachgeschaut..

    Ja es soll die Datein auflisten und mir dann die Möglichkeit geben eine dieser auszuwählen, welche er eben dann nach Vorgabe ändern soll.

    Mfg

  • Hi,
    was kommt hier raus?

    [autoit]

    ;
    ;
    $a = FileGetAttrib("E:\Datas ohne ID")
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    $files = ""
    $file1 = FileFindFirstFile("E:\D*")
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $file1 = ' & $file1 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    While 1
    $files = FileFindNextFile($file1)
    If @error Then ExitLoop
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $files = ' & $files & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    WEnd
    FileClose($file1)

    [/autoit]


    Da ist doch hundertprozentig irgendetwas faul...
    Bitte Ergebnis posten!

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    3 Mal editiert, zuletzt von Andy (20. August 2014 um 14:39)

  • Hallo Andy,

    habe es mal bei mir getestet und folgendes kam dabei raus:

    [autoit]

    >"O:\AutoIt\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\Ghostleader\Desktop\testen IDs.au3" /UserParams
    +>14:16:03 Starting AutoIt3Wrapper v.2.1.2.9 Environment(Language:0407 Keyboard:00000407 OS:WIN_7/Service Pack 1 CPU:X64 OS:X64)
    >Running AU3Check (1.54.22.0) from:O:\AutoIt\AutoIt3
    +>14:16:03 AU3Check ended.rc:0
    >Running:(3.3.8.1):O:\AutoIt\AutoIt3\autoit3.exe "C:\Users\Ghostleader\Desktop\testen IDs.au3"
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    @@ Debug(4) : $a = D
    >Error code: 0
    @@ Debug(8) : $file1 = 1
    >Error code: 0
    @@ Debug(12) : $files = Datas mit ID
    >Error code: 0
    @@ Debug(12) : $files = Datas ohne ID
    >Error code: 0
    @@ Debug(12) : $files = Datenbanktool
    >Error code: 0
    @@ Debug(12) : $files = Datenbanktool neu
    >Error code: 0
    @@ Debug(12) : $files = Debuger Neuere Version
    >Error code: 0
    +>14:16:03 AutoIt3.exe ended.rc:0
    >Exit code: 0 Time: 0.716

    [/autoit]

    Habe allerdings die Pfadangabe von E auf O angepasst.

    Mfg Ghostleader

  • letzter Versuch^^
    es werden 3 Testdateien erstellt und danach die Existenz dieser Dateien geprüft

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <Array.au3>

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

    $vol="O:\Datas ohne ID"

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

    ;$vol="E:\Datas ohne ID"

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

    ; 3 testdateien anlegen
    for $i=1 to 3
    $file=fileopen($vol&"Test"&$i&".tst",9)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $file = ' & $file & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    $dateien=filewrite($file,asc($i))
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $dateien = ' & $dateien & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    fileclose($file)
    next

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

    ;check
    $files = ""
    $file1 = FileFindFirstFile($vol&"*.tst")
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $file1 = ' & $file1 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    While 1
    $files = FileFindNextFile($file1)
    If @error Then ExitLoop
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $files = ' & $files & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    WEnd
    FileClose($file1)

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

    ;
    $ret=_FilelistToArray($vol,"*.tst")

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

    for $i=1 to ubound($ret)-1
    consolewrite($ret[$i]&@crlf)
    next

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


    //EDIT mehrmals geändert

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    4 Mal editiert, zuletzt von Andy (20. August 2014 um 15:11)