leerzeichen in iniread/iniwrite

  • Ich habe irgendwie nicht das Thema gefunden. Also hab ich neue aufgemacht.

    Ich will das mein script eine ini schreibt wo ich da meine Einstellungen speichern will. Und ich brauche da unbedingt eine leertaste.
    Wenn ich in mein GUICtrlCreateInput z.B. "hallo " schreibe, soll "hallo " gespeichert werden und danach wieder "hallo " abliest und einfügt. Das er schreibt aber es wird kein Leerzeichen am ende gelesen. Gibt es dafür eine Lösung?

    Einmal editiert, zuletzt von igromanru (6. Mai 2009 um 02:09)

  • Hallo igromanru,

    du hast leider recht, beim einlesen werden automatisch die Leerzeichen abgeschnitten. Du könntest dich aber mit einem "Ersatz"-zeichen behelfen, beim schreiben fügst du dieses an Stelle von Leerzeichen ein (siehe StringReplace) und beim auslesen das ganze wieder zurück. Tut mir leid, dass mir im Moment keine andere Lösung dafür einfällt,

    mfg (Auto)Bert

  • (ungetestet):
    Statt Leerzeichen einfach per Zeichentabelle ein Symbol entnehmen das nicht das Leerzeichen
    ist aber auch nicht sichtbar ist.

  • Das Problem ist, dass ich will das jeder selbst was reinschreiben kann und dann in ini speichern. Und wenn man am ende leerzeichen ist, dann wird es nicht gehen. Ich will, dass jeder mein Programm benutzen kann. Also ganz normal, ohne irgendwelche zusätzliche Zeichen.

  • neuer einfall...
    vor dem lesen der ini kopierst du es in den tempordner und ersetzt alle leerzeichen mit z.B. {space}
    nach dem lesen ersetzt du die spaces durch normale leerzeichen...
    sollte funzen (einfach filecopy und dann fileread, stringreplace, filedelete, filewrite, iniread)

    cya ²


    Verstehe ich nicht ganz. Wie soll ich beim lesen so machen das {space} durch leereichen ersetzt wird und als leerzeichen in GUICtrlCreateInput angezeigt wird?

  • So kannst du es zum Beispiel machen ;)

    [autoit]

    $String = InputBox("Daten eingeben", "Einen String eingeben ;)")
    MsgBox(0, 'Original', "~" & $String&"~")

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

    ; Schreiben:
    $String = '"' & $String & '"'
    MsgBox(0, 'Für Ini', "~" & $String&"~")

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

    ; Lesen:
    $String = StringRegExpReplace($String, '\A"(.*)"\Z',"$1")
    MsgBox(0, 'Nach dem Lesen', "~" & $String&"~")

    [/autoit]

    So werden die Strings in Anführungszeichen eingeschlossen. Das ist auch selbsterklärend in der Ini. Und wenn man die Anführungszeichen beim manuellen bearbeiten vergisst, funktioniert es das Auslesen trotzdem, nur die Leerzeichen fehlen dann an Anfang und Ende.

  • Viellen dank an euch alle.
    Hab jetzt

    [autoit]

    $edit0 = StringReplace($READ0,"{s}","")

    [/autoit]


    benutzt.
    Damit es sicherer geht.^^

  • ALso passt nicht ganz zum Überschrieft aber das es das selbe Programm ist und die selbe ini wollte ich mal fragen wie ich Status von Checkbox in die ini schreiben.

  • Hallo igromanru,

    den Wert von Checkboxen kannst du mit GuiCtrlRead ermitteln. In die Ini kannst du mit IniWrite bzw. IniWriteSection schreiben. Schau dir doch die Stichpunkte einfach in der Hilfe an,

    mfg (Auto)Bert

  • Hab da rum probiert, hat irgendwie am anfang nicht geklappt, aber hab endlich hinbekommen.