Ini ersetzten

  • Hey

    Spoiler anzeigen
    [autoit]

    Case $SubButton
    $IniOffen = FileOpen ("Savegames.ini",0)
    $AktuelleIni = FileRead ($IniOffen)
    $IniGeschlossen = FileClose ($IniOffen)
    $NeuerPfad = GUICtrlRead ($Pfad)
    $Ersetzen = StringReplace ($AktuelleIni, $AlterPfad, $NeuerPfad)
    MsgBox (1, "Erfolg", $Ersetzen)
    GUISetState (@SW_HIDE, $SubGUI)

    [/autoit]

    Ein Teil meines Skriptes.
    Die Vorhandene Ini, soll dann komplett mit den neuen Werten ersetzt werden!
    Ich weiß jedoch nicht, wie ich es angehen soll.
    Das Auslesen und alles Funktioniert.
    Auch das Ersetzen, nur, wie kann ich dann das Ergebniss in die Ini schreiben?
    Das heißt, Inhalt der Ini löschen, $Ersetzen da rein, und Speichern.

    Könnt ihr mir helfen?

    Mfg
    Benne

    Einmal editiert, zuletzt von PokerFace (12. April 2009 um 22:02)

  • grundlegende Frage: Warum nutzt du nicht die Funktionen IniRead() & IniWrite() ?

    Edit:
    Aber auch ohne dies (ich sah, Du willst alle Pfade ersetzen) ist dies doch kein Problem:

    Spoiler anzeigen
    [autoit]

    Case $SubButton
    $IniOffen = FileOpen ("Savegames.ini",0)
    $AktuelleIni = FileRead ($IniOffen)
    $IniGeschlossen = FileClose ($IniOffen)
    $NeuerPfad = GUICtrlRead ($Pfad)
    $Ersetzen = StringReplace ($AktuelleIni, $AlterPfad, $NeuerPfad)
    MsgBox (1, "Erfolg", $Ersetzen)
    $IniOffen = FileOpen ($NeuerPfad,2)
    FileWrite($IniOffen,$Ersetzen)
    FileClose($IniOffen)
    GUISetState (@SW_HIDE, $SubGUI)

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (12. April 2009 um 21:25)

  • Wenn ich dich richtig verstanden habe wäre das einfachste doch du löscht die Datei und legst sie wieder neu an.

  • Bitte eindeutiges Thema nennen !

    Das Du eine Frage hast ist meine ich logisch. Aus der Themenbeschreibung soll jeder lesen können, worum es geht (auf jeden Fall ansatzweise).

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Habe ich auch erst gedacht !

    Aber wenn er jeden, in der INI-Datei stehenden Pfad durch einen anderen ersetzen will, warum dann jeden einzelnen erst mit IniRead() lesen ?

    FileRead() und StringReplace() (wie PokerFace es auch benutzt hat) ist in diesem Fall doch besser angebracht. Das spart irgendwelche Array's und Schleifen !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Micha_He'S Lösung hatter leider nicht funktioniert ^^
    Aber ich habe das so gelöst, einfach den Inhalt per FileWrite in ein nicht existierendes Dokument geschrieben.
    Somit wurde die neue Ini erstellt, und ich habe das Problem behoben ;)

  • Wahrscheinlich weil in "$NeuerPfad" nur der Pfad und kein Pfad+Dateiname enthalten ist !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • FileRead? Wieso nicht IniRead?

    Also wenn ich eine INI ändere dann so, wobei die erste Zeile nur dafür sorgt, das der alte/erste Wert gesetzt wird:

    Spoiler anzeigen
    [autoit]




    IniWrite("E:\meineDatei.ini", "sektion2", "Schlüssel", "Skøre Noodle")
    $var = IniRead("E:\meineDatei.ini", "sektion2", "Schlüssel", "")

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

    MsgBox(4096, "Ergebnis", "Dänisch: " & $var)

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


    IniDelete("E:\Temp\meineDatei.ini", "sektion2", "Schlüssel")

    IniWrite("E:\meineDatei.ini", "sektion2", "Schlüssel", "Verrückte Nudel")

    $var2 =IniRead("E:\meineDatei.ini", "sektion2", "Schlüssel", "")

    MsgBox(4096, "Ergebnis", "Deutsch: " & $var2)

    [/autoit]

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Hi Alina,

    Zitan von Micha-He

    Zitat

    FileRead() und StringReplace() (wie PokerFace es auch benutzt hat) ist in diesem Fall doch besser angebracht. Das spart irgendwelche Array's und Schleifen !


    Muß Ihm recht geben. Geht wirklich schneller.
    Aber das mit dem ersetzen muß im Prinzip so funktionieren. Wenn nicht mußt du mal die Ausgabe posten oder sagen was im Pfad fehlt.

    MfG
    Der_Doc

  • Der_Doc.

    Ja, ohne Angaben vom Pad und der evtl. Ausgabe kann man da ja nichts sagen. Um ihm einen Lsg-Weg zu geben habe ich dann o. g. Script als Hilfe und aus der Hilfe erstellt.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr