FileWriteLine wird nicht ausgeführt

  • Hallo,

    Bin mir gerade ein Script für interne Auswertungszwecke am basteln und habe folgendes Problem:

    Wenn Wert4 kleiner ist als WertX dann soll überprüft werden ob dieser Eintrag in der Datenbank( TXT Datei ) bereits existiert. Wenn ja, mache nichts, ansonsten schriebe Daten in 2 TXT Dateien. Wert4 kann die Wertigkeit zwischen 1 und 99 haben. Das funktioniert soweit auch Recht gut nur wenn Wert4 den Wert 8 oder 9 hat wird nur die Zeile mit FilrWrite ausgeführt und nicht die mit Filewriteline. Das ganze ist auch Rekonstruierbar: Wenn ich den Wert 8 habe und diesen manuell abändere auf z.B. 7 dann tut es so wie es soll.
    Hat jemand eine Idee woran das liegen könnte?

    [autoit]


    If $Wert4 < $WertX Then
    If StringInStr($DBRead, $Tdaten) Then
    sleep(10)
    Else
    FileWriteLine($Log, $Tdaten & @CRLF & "")
    FileWrite(@YEAR & "." & @MON & "." & @MDAY & "_Info.txt", $Tdaten & @CRLF)
    sleep(10)
    EndIf
    EndIf

    [/autoit]

    kind regards

    lordkingpin

  • Hallo LordKingPin,

    warum sollte FileWriteLine nicht ausgeführt werden, so wie dein Skriptschnipsel aufgebaut ist wird immer beides ausgeführt FileWriteLine schreibt in die Datei die in der Varibalen $Log definiert ist. FileWrite schreibt in die Datei Tagesdatum_Info.txt wobei Tagesdatum das echte Tagesdatum als String ist. Führe folgendes Testskript:

    Spoiler anzeigen
    [autoit]

    $Log = @ScriptDir & "\Testlog.log"

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

    For $i = 1 To 99
    $Wert4 = 8
    $WertX = 11
    $DBRead = "Dies ist ein Teststring"
    $Tdaten = "Test"
    ConsoleWrite("1. Test hier darf kein Eintrag geschrieben werden (Daten in DB!)" & @CRLF)
    _testfunc()

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

    $Wert4 = 8
    $WertX = 6
    $DBRead = "Dies ist ein Teststring"
    $Tdaten = "Test"
    ConsoleWrite("2. Test hier darf kein Eintrag geschrieben werden (Wert4!)" & @CRLF)
    _testfunc()

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

    $Wert4 = 8
    $WertX = 11
    $DBRead = "Dies ist ein Teststring"
    $Tdaten = "Testa"
    ConsoleWrite("3. Test hier muss ein Eintrag geschrieben werden (alle Bedingungen stimmen)" & @CRLF)
    _testfunc()
    Next

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

    Func _testfunc()
    If $Wert4 < $WertX Then
    ConsoleWrite("Wert4 ist kleiner" & @CRLF)
    If StringInStr($DBRead, $Tdaten) Then
    ConsoleWrite("Daten in DB enthalten" & @CRLF)
    ;Sleep(10) ;<=== unnötig
    Else
    ConsoleWrite("Daten NICHT in DB enthalten" & @CRLF)
    FileWriteLine($Log, $Tdaten & @CRLF & "")
    FileWrite(@YEAR & "." & @MON & "." & @MDAY & "_Info.txt", $Tdaten & @CRLF)
    ;Sleep(10 ;<=== unnötig
    EndIf
    Else
    ConsoleWrite("Wert4 ist Grösser oder gleich" & @CRLF)
    EndIf
    EndFunc ;==>_testfunc

    [/autoit]

    aus und du wirst sehen beide Dateien sind identisch.

    mfg autoBert

  • Hallo autobert,

    da gebe ich dir vollkommen Recht nur es ist leider so wie ich oben beschrieben habe. Habe die ganze Sache jetztmal temporär so gelösst das am Ende beide Dateien nochmal Gegengeprüft und gegebenfalls ergänzt werden.

    kind regards
    LordKingpin