Ini Datei auslesen und anwenden

  • Hallo, ich habe leider ein paar Probleme bei der umsetzung meines AutoIT Scriptes.
    Das Script im allgemeinen funktioniert genauso wie es sollte, nur möchte ich es um ein paar Variablen erweitern, aber das stellt mich selbst als Anfänger vor Problemen.
    letsgo hat mir bereits Gestern die Befehle für die Funktionen gesagt die ich brauche, aber an der umsetzung hapert es bei mir leider.
    Undzwar möchte ich das von meinem Script eine .ini Datei ausgelesen wird und die Information die dort drin stehen von dem Script verwendet werden.
    Zb. HotKeySet("{F5}", "_Run")
    Sleep(280)
    $color1=0x0000FF ;rot = 0x0000FF ; grün = 0x00FF00 ect..

    Desweiteren möchte ich eine Datei in einem externen Pfad von dem Script bearbeiten, wie zb. eine Line hinzufügen, aber das stellt mich mal wieder vor Problemenen.
    Ich würde mich über Hilfe sehr freuen. ;)

    Einmal editiert, zuletzt von Runaro (5. März 2012 um 01:36)

  • Also... eine Ini-Datei auswerten geht einfach so:

    [autoit]

    IniRead($FILENAME,$SECTION,$KEY,$DEFAULT)

    [/autoit]

    Wobei $FILENAME für den Namen der ini steht, $SECTION für die betroffene Sektion (Siehe Beispiel) und $KEY für den betroffenen Schlüssel(Beispiel!). $DEFAULT setze ich immer auf 0, keine Ahnung was das ändert... glaube, wenn der Schlüssel nicht gefunden wird, wird $DEFAULT verwendet.

    Wenn dein AutoIt-Skript diese Zeile enthält...

    [autoit]

    $VARIABLE = IniRead("test.ini","MAIN","SinnDesLebens",0)

    [/autoit]


    Dann muss in der Datei test.ini (im Skriptordner) das stehen:

    Code
    [MAIN]
    SinnDesLebens=42


    Wobei 42 durch alles andere ersetzt werden kann. "42" wird dann, in deinem AutoIt-Skript, unter $VARIABLE abgespeichert.

    lg chess

    EDIT:
    Das mit dem Dateibearbeiten in einem anderen Ordner geht auch.
    Guck dir mal die File-Befehle an. Dann musst du natürlich den ganzen Pfad angeben... oder so arbeiten:
    Fall 1: Datei test.txt liegt in "C:\Dokumente" und Skript.au3 auf dem Desktop. Es soll der Text "Hallo Welt!" in die letzte Zeile geschrieben werden.

    [autoit]


    #include <File.au3>
    FileWrite("C:\Dokumente\test.txt","Hallo Welt!")

    [/autoit]

    Fall 2: Datei test.txt liegt in "\Hauptordner\Dokumente" und Skript.au3 liegt in "\Hauptordner\Scripts". Es soll der Text "Hallo Welt!" in die letzte Zeile geschrieben werden.

    [autoit]


    #include <File.au3>
    FileWrite("..\Dokumente\test.txt","Hallo Welt!")

    [/autoit]

    ".." wechselt ein Verzeichnis nach oben!

  • Wie wäre es, wenn du mit IniReadSection alles aus der Datei in ein Array einließt, und dann das Array komplett durchläufst und die Daten darin verarbeitest?
    Also in etwa so:

    [autoit]

    $aData = IniReadSection(@ScriptDir & "\Data.ini", "TestSection")

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

    For $i = 1 To $aData[0][0]
    _IrgendeineFunktion($aData[$i][0], $aData[$i][1]) ;Hier werden dann die Daten verarbeitet.
    Next

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

    Func _IrgendeineFunktion($sKey, $sValue)
    MsgBox(64, "Data", $sKey & " = " & $sValue)
    EndFunc

    [/autoit]


    Die Ini würde dann z.B. so aussehen:

    Code
    Test=Hallo
    Red=0xFF0000
    Green=0x00FF00
    Blue=0x0000FF


    Wenn du eine vorher nicht festgelegte Menge an Daten verarbeiten willst, ist es grundsätzlich besser Arrays zu verwenden.

    Edit: Aus deiner PN schließe ich, dass du meinen Beitrag zu wörtlich genommen hast. Das hier war nur ein Beispiel.. Die Funktion mit der MsgBox musst du natürlich durch das ersetzen was letztendlich deine Daten verarbeitet. Es wäre wahrscheinlich wesentlich einfacher dir zu helfen, wenn du mal genauer beschreibst, was du machen willst...

  • Zitat

    Aus deiner PN schließe ich, dass du meinen Beitrag zu wörtlich genommen hast. Das hier war nur ein Beispiel.. Die Funktion mit der MsgBox musst du natürlich durch das ersetzen was letztendlich deine Daten verarbeitet. Es wäre wahrscheinlich wesentlich einfacher dir zu helfen, wenn du mal genauer beschreibst, was du machen willst...