Problem beim Speichern einer INI-Datei

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Vultrax.

    Problem beim Speichern einer INI-Datei

    Hallo,

    ich habe ein kleines Problem beim Abspeichern einer INI-Datei, die mit WritePrivateProfileStringA erstellt wurde.
    Das Problem: Ich möchte bei der erstellten INI-Datei die Leerstelle, die man am Ende sieht, entfernen, nur sorgt meine Methode dafür, dass noch viel mehr Leerstellen in der INI-Datei vorkommen, welche man allerdings mit (Windows) Notepad nicht sehen kann.

    Bild: http://www.mediafire.com/convkey/c032/n7654705ucoz6x7bg.jpg

    (Nachdem ich die Leerstelle entfernt habe)

    Bild: http://www.mediafire.com/convkey/a357/eozm2avzh5taqc15g.jpg

    (Nachdem ich die INI-Datei mehrmals überschrieben habe)

    Bild: http://www.mediafire.com/convkey/8fcb/r5rhp8338xxru6rbg.jpg

    Die Methode, die ich verwende, um die Leerstelle zu entfernen:

    VB.NET-Quellcode

    1. IO.File.WriteAllText(FileName, IO.File.ReadAllText(FileName).Remove(IO.File.ReadAllText(FileName).Length - 1))

    Ich habe bereits verschiedene Encodings versucht, allerdings ohne Erfolg.


    Ich hoffe, dass mir Jemand weiterhelfen kann! :)
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Vultrax“ ()

    Du meinst die Leerstellen am Ende deines Setting-Korpus'?

    Mach es doch einfach mit ReadAllLines .


    C#-Quellcode

    1. string[] lines = File.ReadAllLines("settings.ini");
    2. StringBuilder sb = new StringBuilder();
    3. for(i = 0; i < lines.Length - 1; i++)
    4. {
    5. sb.Append(lines[i] + Environment.NewLine);
    6. }
    7. File.WriteAllText("settings.ini", sb.ToString())

    also einfach die Länge des Arrays um eins dekrementieren.

    oder sonst, ganz optimiert:

    C#-Quellcode

    1. string[] lines = File.ReadAllLines("settings.ini");
    2. StringBuilder sb = new StringBuilder();
    3. for(i = 0; i < lines.Length; i++)
    4. {
    5. if(!String.IsNullOrWhiteSpace(lines[i]))
    6. sb.Append(lines[i] + Environment.NewLine);
    7. }
    8. File.WriteAllText("settings.ini", sb.ToString())


    Ferner pastebin.com/AgrTdzDY ( iniparser c# pastebin gegooglet)

    Und Gott alleine weiß alles am allerbesten und besser.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „φConst“ ()

    Vielen Dank für eure Antworten und Entschuldigung für die verspätete Antwort.

    Ich hatte es bereits mit Trim gelöst:

    VB.NET-Quellcode

    1. IO.File.WriteAllText(FileName, StringBuilder.ToString.Trim)

    Ich werde mir Eure Beispiele anschauen, sobald ich Zuhause bin und Zeit finde.
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford