Löschen einer Zeile/Wertes aus einer Ini (unbekannter Schlüssel)

  • Hallo

    Ich bin es mal wieder :P

    Hab wiedermal eine kleines Problem beim finden einer Zeichenkette. Naja einfach lesen. Ist sicher wieder mit einer einfachen Lösung verbunden die so nahe liegt und doch für mich so fern ist ;-).

    Folgender Sachverhalt. Mein Programm liest Werte aus einer Ini Datei aus. Der Inhalt der Ini sieht Beispielhaft so aus:

    Die durch ein | getrennten Eigenschaften - Name, Stückzahl und Preis - werden in einem ListView aufgelistet.

    Dem Nutzer des Programm soll es möglich sein neue Gegenstände hinzuzufügen, zu editieren und zu löschen.

    Das hinzufügen und editieren stellte kein Problem dar und funktionier ohne Probleme. Allerdings scheiter ich am löschen eines Items auf halben Wege. Die Zeile des zu löschenden Items ist natürlich unbekannt bzw wird erst durch die Auswahl des Users vorgegeben. Auch haben die ITEM1, ITEM2, ITEMn...... nicht imm der gleiche Zeichenanzahl.

    Aus dem ListView erhalte ich ja den String (als beispiel): Fuchs|1|200. Diesen find ich auch in der Ini und kann Ihn mittels StringReplace ersetzen. Allerdings erscheint nachdem ich den String ersetzt habe eine Leerzeile in meinem ListView und der Eintrag ITEM1= bleibt in der Ini stehen. Logisch wird ja nicht mit ersetzt.

    Wie bekomme ich es also am besten hin das ich den Eintrag ITEM1= aus der Ini mit herauslösche und somit keine Leerzeile mehr im ListView bekomme und am besten auch keine Leerzeile in der Ini? Eine Leerzeile in der Ini würde allerdings keine Probleme mach, aber der Übersichtlichkeit und größe der Ini gut tun.

    Gibt es also eine Möglichkeit die Zeichen/Wert auf einer Zeile vor dem "="&String auszulesen oder zu erfassen?

    Wie immer vielen Dank für Eure Hilfe. Ihr seit echt eine super Community.

    Falls weitere Information, Beschreibungen, Scripte benötigt werden einfach schreiben/sagen.

    Gruß

    3 Mal editiert, zuletzt von Prixma (16. November 2010 um 12:00)

  • Hallo Prixma,

    stell doch bitte auch dein komplettes Skript mit ein paar Beispieldaten ein. Ansosnten schlage ich vor den Schlüssel in der LV in einer unsichtbaren Spalte mitzuführen, dann hast du es viel einfacher,

    mfg autoBert

  • @ autoBert

    Dein Vorschlag klingt erstmal recht gut. Ich setz mich nochmal dran. Hab mir auch schon gedanken über das mitführen der eindeutigen ID gemacht. Werd ich mal versuchen so.

    Ich würde es erstmal alleine Versuchen und wenn ich dann immer noch scheiter dann erneut anfragen. :)

    Aber erstmal Danke

    EDIT: Lösungsvorschlag von autoBert ist Goldwert^^

    Vielen lieben Dank

    Einmal editiert, zuletzt von Prixma (16. November 2010 um 11:58)

  • Was man auch machen könnte:

    1. String der entfernt werden soll ist ja bekannt, also z.B. Fuchs|1|200
    2. ini datei mit _filereadtoarray in ein Array einlesen
    3. mit arraysearch den index bestimmen in dem der zu löschende wert steht
    4. array delete für den ermittelten index
    5. ini datei mit filewritefromarray ersetzen
    6. listview anhand der neuen ini aktualisieren...