Problem Mit Ini auslesen

  • Hallo Leute,
    mein Problem liegt darin, dass ich eine INI datei von einem anderen Programm auslesen möchte und jedesmal, wenn sich die 1. Zeile ändert, dass dieses dann in eine Gui geschrieben wird. Leider fehlt mir komplett der ansatz dazu ^^ habe ein bisschen rumprobiert bin jedoch zu keinem erfolgreichem ergebnis gekommen. Hier mein Test Script welches garnicht funktioniert ^^

    Spoiler anzeigen

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>


    $handle = FileOpen("Test.ini",1)
    $lol = FileReadLine("Test.ini",1)
    FileClose($handle)


    GUICreate("lol")
    $gInput = GUICtrlCreateEdit("",0,0)
    GUISetState()
    While 1
    If $lol <> $lol Then
    SetStatus($lol)
    EndIf
    WEnd

    While 1
    $gMsg = GUIGetMsg()
    Select
    Case $gMsg = $GUI_EVENT_CLOSE
    EndSelect
    WEnd


    Func SetStatus($String)
    GUICtrlSetData($gInput, @CRLF & $String, "data")
    EndFunc

    Das mit den 2While schleifen kann man auch ändern, indem man den Inhalt der 1. While schleife unter das "EndSelect" der 2.Schleife packt oder?

    Edit:: If $lol <> $lol wird nie passieren oder ? aber wie geht es dann ? 8|

    3 Mal editiert, zuletzt von SiLenCa (26. Februar 2009 um 23:35)

  • Hi,
    du brauchst noch ne Zwischenvariable, die du Überprüfen kannst. If $lol <> $lol wird immer False zurückgeben ;).

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $test = FileOpen("Test.ini",1)
    FileClose($test)

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

    GUICreate("test")
    $gInput = GUICtrlCreateEdit("", 0, 0)
    GUISetState()

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

    $str1 = FileReadLine("Test.ini", 1)
    If $str1 <> '' Then SetStatus($str1)

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

    While 1
    $str2 = FileReadLine("Test.ini", 1)
    if $str2 <> $str1 Then
    SetStatus($str2)
    $str1 = $str2
    EndIf

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

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func SetStatus($String)
    GUICtrlSetData($gInput, $String & @CRLF, "data")
    EndFunc ;==>SetStatus

    [/autoit]

    Aber die Idee hat gestimmt.

    anno2008 8)

  • So, ich war zu dumm lol... es wird nicht immer in die 1. Zeile geschrieben. Es wird immer eine neue Zeile dadrunter geschrieben. D.h. dass der erste log in der 1. Zeile geschrieben wird, der 2. log in die 2. Zeile usw... Aber wie kriege ich es hin, dass er immer die aktuell neu geschriebene Zeile ausliest?

    Edit:: Dazu bräuchte ich doch rein Theoretisch nur nen Array, welches die Anzahl aller "Lines" in dem log angibt oder?

    Edit2:: Habs gelöst mitm Counter ;)

    Spoiler anzeigen

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    Global $Count = 1

    $test = FileOpen("Test.ini",1)
    FileClose($test)

    GUICreate("test")
    $gInput = GUICtrlCreateEdit("", 0, 0)
    GUISetState()

    $str1 = FileReadLine("Test.ini", $Count)
    If $str1 <> '' Then SetStatus($str1)

    While 1
    $str2 = FileReadLine("Test.ini", $Count)
    if $str2 <> $str1 Then
    SetStatus($str2)
    $str1 = $str2
    $Count += 1
    EndIf

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    Func SetStatus($String)
    GUICtrlSetData($gInput, $String & @CRLF, "data")
    EndFunc ;==>SetStatus

    2 Mal editiert, zuletzt von SiLenCa (26. Februar 2009 um 17:26)

  • Oda so:

    [autoit]


    #include <File.au3>
    MsgBox(0, "", FileReadLine("datei.log", _FileCountLines("datei.log")))

    [/autoit]


    :D

    Padmak