IniRead / IniWrite

  • Ich versuche jetzt seit ~1-2 stunden mein Problem selbst zu lösen...
    Aber da ichwohl einfach nicht weiterkomme, habe ich beschlossen mir hier helfen zu lassen.

    Zu erst einmal :

    - Ich hab mir das beispiel im Toturial angeguckt
    - Ich habe versucht mein Problem mithilfe von beispielen zu lösen (angucken --> verstehen)
    - Ich habe mehrer möglichkeiten ausprobiert

    Naja sogesehen klappt ja eigentlich alles :

    [autoit]


    HotKeySet("^i", "_id")

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

    Func _id ()
    ;~ $name = IniRead(Datei, Section, Schlüssel, Standardwert)
    $id2 = IniRead("text.ini", "Id", "User", "ERROR")
    $pw2 = IniRead("text.ini", "Pw", "User", "ERROR")

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

    Send ($id2 & "{TAB}" & $pw2)
    EndFunc

    [/autoit]

    Der inhalt der text.ini Datei wird ausgegben sobald ich (strg+i) drücke.

    Aber das Problem ist halt :
    Wenn ich diese methode anwenden MUSS die "text.ini" Datei bereits exestieren UND ausgefüllt sein.

    Weil ich es aber so nicht wollte habe ich folgendes Probiert :

    [autoit]


    HotKeySet("^i", "_id")

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

    Func _id ()
    ;~ $name = IniRead(Datei, Section, Schlüssel, Standardwert)
    $id2 = IniRead("text.ini", "Id", "User", "ERROR")
    If $id2 = 0 Then
    $id1 = InputBox("ID-Abfrage", "Trage bitte hier deine ID ein :")
    IniWrite(@ScriptDir & "\text.ini", "Id", "user", $id1)
    ElseIf $id2 = 1 Then
    $id2 = $id2
    EndIf

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

    $pw2 = IniRead("text.ini", "Pw", "User", "ERROR")
    If $pw2 = 0 Then
    $pw1 = InputBox("PW-Abfrage", "Trage bitte hier dein PW ein :")
    IniWrite(@ScriptDir & "\text.ini", "Pw", "user", $pw1)
    ElseIf $pw2 = 1 Then
    $pw2 = $pw2
    EndIf

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

    Send ($id2 & "{TAB}" & $pw2)
    EndFunc

    [/autoit]

    Aber hier öffnet sich die Inputbox () immer, egal ob in der "text.ini" Datei etwas steht oder nicht.

    //
    Nun zu meiner Frage :

    Was müsste ich an meinem Code verändern um folgendes zu erreichen :

    - Es soll gecheckt werden ob die datei "text.ini" bereits exestiert.
    - Sollte sie NICHT exestieren ---> Anlegen + Füllen (id + pw)
    - Sollte sie bereits exestieren ---> Informationen auslesen
    - Diese informationen dann ausgeben WENN man (strg+i) drückt

    *erster Post*
    Ich hab mir die "wie poste ich richtig" (u.s.w.) - Threads bereits durchgelesen.
    Naja ich hoffe das ich alles beachtet hab...

    Schonmal Vielen dank für jeden ratschlag den ihr mir gebt.

    Einmal editiert, zuletzt von MaZze (13. Dezember 2007 um 09:27)

  • hallöchen,

    binde doch einfach eine if-bedingung ein, wie

    if fileexists("text.ini") ;; datei exestiert
    ;;; code, wenn text.ini exestiert
    else ;; datei exestiert nicht
    ;;; code, wenn text.ini nicht exestiert
    endif

    ;; code, wo beides zutreffen könnte

    gruss exberliner

  • genau. Und wenn du wissen willst ob die Section existiert, IniReadSection wenn sie nicht existiert ist @error=1
    Bei nem Key (so wie es gerade bei dir ist) muss du ERROR nehmen (ist ja bei dir so)
    also so:

    [autoit]

    HotKeySet("^i", "_id")

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

    Func _id ()
    ;~ $name = IniRead(Datei, Section, Schlüssel, Standardwert)
    $id2 = IniRead("text.ini", "Id", "User", "ERROR")
    If $id2 = "ERROR" Then
    $id1 = InputBox("ID-Abfrage", "Trage bitte hier deine ID ein :")
    IniWrite(@ScriptDir & "\text.ini", "Id", "user", $id1)
    Else
    $id2 = $id2
    EndIf

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

    $pw2 = IniRead("text.ini", "Pw", "User", "ERROR")
    If $pw2 = "ERROR" Then
    $pw1 = InputBox("PW-Abfrage", "Trage bitte hier dein PW ein :")
    IniWrite(@ScriptDir & "\text.ini", "Pw", "user", $pw1)
    Else Then
    $pw2 = $pw2
    EndIf

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

    Send ($id2 & "{TAB}" & $pw2)
    EndFunc

    [/autoit]
  • Vielen dank ihr beiden !
    Hat wunderbar funktioniert.

    [autoit]

    HotKeySet("^i", "_id")

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

    Func _id ()
    ;~ $name = IniRead(Datei, Section, Schlüssel, Standardwert)
    $id2 = IniRead("text.ini", "Id", "User", "ERROR")
    If $id2 = "ERROR" Then
    $id1 = InputBox("ID-Abfrage", "Trage bitte hier deine ID ein :")
    IniWrite(@ScriptDir & "\text.ini", "Id", "user", $id1)
    Else
    $id2 = $id2
    EndIf

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

    $pw2 = IniRead("text.ini", "Pw", "User", "ERROR")
    If $pw2 = "ERROR" Then
    $pw1 = InputBox("PW-Abfrage", "Trage bitte hier dein PW ein :")
    IniWrite(@ScriptDir & "\text.ini", "Pw", "user", $pw1)
    Else
    $pw2 = $pw2
    EndIf

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

    Send ($id2 & "{TAB}" & $pw2 & "{ENTER}")
    EndFunc

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

    while 1
    sleep (10000)
    WEnd

    [/autoit]
  • @Ini Read: Seit wann "merkt" sich AutoIt denn wo die Ini ist, in die geschrieben wurde?

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

  • Ne eigentlich wegen dieser Zeile

    [autoit]

    $pw2 = IniRead("text.ini", "Pw", "User", "ERROR")

    [/autoit]

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

  • Ne eigentlich wegen dieser Zeile

    [autoit]

    $pw2 = IniRead("text.ini", "Pw", "User", "ERROR")

    [/autoit]

    Also die ini datei wird, falls sie noch nicht besteht, im selben ordner angelegt wie der script/*.exe auch ist.
    Und natürlich wird auch nur die text.ini datei gelesen die auch im selben ordner ist.
    (zumindest reicht mir das ^^ )

    Oder wie meinst du das ?

  • Warum muss es dann bei IniWrite dann angegeben werden und bei IniRead nicht? Dann kann man es doch gleich weglassen.

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)