Speichern von Datensätzen ohne DB



  • Hola,

    ich überlege mir just, wie ich einen Datensatz am besten schreiben/
    speichern kann, um ihn später wieder in die einzelnen EditControls
    laden und bearbeiten zu können.

    Es soll 5 Eingabefelder geben die Daten annehmen.
    Diese 5 Einträge dacht' ich mir schreibe ich in eine Textdatei
    in dem Format "wert1;wert2;wert3;wert4;wert5;".

    Um den Datensatz später zu ändern lade ich ihn in die Controls zurück
    und speichere ihn in meiner Datensatz.txt in die entsprechende Zeile
    zurück.

    Jetzt meine Frage:
    Wie kann man das einfacher und besser erledigen ? Allerdings ohne irgendwelche
    Datenbanksysteme nutzen zu müssen. Das Programm soll auch auf frisch aufgesetzten
    Systemen gleich ohne Probleme laufen.

    Und was passiert wenn in einem der 5 Werte der enthaltene Text ein ";"
    enthält ? Dann würde doch das Laden des Datensatz voll in die Hose
    gehen, weil das ; als Trennpunkt erkannt werden würde oder ?



  • Es gibt doch einen ODBC Treiber für Textdateien, oder? Guck dir den doch mal an. 😃

    Und sonst kannst du auch ne normale Textdatei nehmen oder ein CArchive. 🙂



  • Oder INI-Dateien



  • Zu dem Trennzeichen:
    das kannst du doch frei wählen, oder ? Du könntest ja auch ;; benutzen, oder @%@.
    Oder du definierst feste Längen, z.B. für jeden der 5 Werte stellst du 30 Zeichen bereit. Musst nur beim Speichern die entsprechenden Leerzeichen auffüllen und beim Auslesen wieder abschneiden.
    Noch eine Möglichkeit wäre, einfach jeden Wert in einer neuen Zeile zu speichern. Dann fallen Trenner und Längenbegrenzungen ganz weg.



  • auch eine sehr gute Möglichkeit, solche Datensätze zu speichern: XML



  • Curse schrieb:

    Hola,

    Jetzt meine Frage:
    Wie kann man das einfacher und besser erledigen ? Allerdings ohne irgendwelche
    Datenbanksysteme nutzen zu müssen. Das Programm soll auch auf frisch aufgesetzten
    Systemen gleich ohne Probleme laufen.

    Mittels CSV Dateien (CSV: Comma Separated Values)

    Curse schrieb:

    Und was passiert wenn in einem der 5 Werte der enthaltene Text ein ";"
    enthält ? Dann würde doch das Laden des Datensatz voll in die Hose
    gehen, weil das ; als Trennpunkt erkannt werden würde oder ?

    Ja, dann musst du halt ein anderes, selteneres Zeichen (z.b.'|') nehmen und auch sicher sein, dass keine solchen Trennzeichensymbole nicht als Daten abgelegt werden.

    Eine Überprüfung der Daten bevor du sie speicherst (egal ob DB oder nicht) finde ich sinnvoll.



  • Hallo,

    das mit der Textdatei finde ich noch am besten.
    Allerdings in jede Zeile einen der 5 Werte zu schreiben
    ist etwas aufwändig. Denn es sind ja nicht nur 1x5 Werte
    die einen Datensatz bilden, sondern möglicherweise 10000x5 Werte
    (10.000 Datensatzreihen)

    INI-Methode:
    Die INI zum speichern müsste ich dann so aufbauen ? :
    [1] //als Suchhandle 1 Datensatz = matchnumber
    m_wert1=
    m_wert2=
    m_wert3=
    m_wert4=
    m_wert5=

    [2] //hier 2ter Datensatz = matchnumber
    //siehe [1]

    Wobei ich dann in einer Schleife hochzähle und pro "match"
    den Datensatz dann auslese. Richtig ?

    Lade ich allerdings aus einer Textdatei, die pro Zeile einen
    Datensatz hat (mit 5 Werten durch Trennzeichen), diesen in meine Controls, dann
    kann ich den Anwender Änderungen am ganzen Datensatz machen lassen
    und schreibe ihn ganz neu in die Zeile, aus der er kommt 💡



  • hm, versteh ich net ganz.
    wenn du es mit einer Textdatei machst, dann kannst du nie auf einen ganz bestimmten Datensatz zugreifen (es sei denn du machst eine Zuordnung nach Zeilen und lädst halt dann die n-te Zeile, wobei du aber immer erst n-1 Zeilen überspringen musst beim Auslesen).

    Wenn du aber die INI-Methode nimmst, dann kannst du gezielt einen Datensatz suchen und laden. Als Section-Bezeichner könntest du ja z.B. nicht nur eine Nummer verwenden, sondern auch einen Suchbegriff, über den dieser Datensatz aufgefunden werden können soll. Achtung aber: Section-Name muss eindeutig sein, also am Besten Kombination aus Suchbegriff und durchlaufender Nummer verwenden.

    Ich plädiere übrigens wie oben trotzdem immernoch für XML 🕶



  • Hmm, XML ? Hab ich noch nie benutzt ? 🤡



  • naja, du musst es ja nicht benutzen, aber es wäre hier eine alternative, meiner meinung nach. wenn du es allerdings noch nie benutzt hast, dann lohnt es sich andererseits wahrscheinlich nicht, sich extra deswegen jetzt darin einzuarbeiten 🙂
    ➡ mach's mit Textfiles oder INI, das ist auch gut!


Anmelden zum Antworten