INI-File: welches Format beim Lesen und Schreiben?

Rund um die LCL und andere Komponenten
Mathias
Beiträge: 6165
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: INI-File: welches Format beim Lesen und Schreiben?

Beitrag von Mathias »

Und Lazarus bietet auch die direkte Einbindung von XML-Config ähnlich wie Ini-Config in die GUI.
"in die GUI" ?
Habe ich da etwas verpasst ?
Die Config-Files sollten einfach und mit einem Editor von Nicht-informatischem Fach-Ingenieur bearbeitbar sein:
Wen das nicht übersichtlich ist ?

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8"?>
<CONFIG>
  <Form1>
    <FormPos Top="179" Left="645" Width="320" Height="240"/>
  </Form1>
</CONFIG>
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: INI-File: welches Format beim Lesen und Schreiben?

Beitrag von photor »

Moin,

die Config/das INIFile ist für(!) ein GUI-Programm, welches die Berechnungen ausführen soll und in der GUI kann ich natürlich alle(!) Einstellungen machen; das sind u.U. ettliche. Diese sollen/werden im INI-File gespeichert. Wenn ich jetzt nur einen oder 2 Parameter ändern will, sollte es reichen, genau diese im INI zu finden (was durch den Key kein großes Problem sein sollte) und zu ändern.

Über die Übersichtlich XML- oder UML- oder BlahML-Dateien könnte man streiten. Und ich habe konkret UML auch in Erwägung gezogen. Ich (und auch die Kollegen) finde das eher schlech les- und editierbar. Also: Das INI-File selbst steht nicht zur Diskussion - die Entscheidung ist gefallen. Ich wollte ja nur Wissen, wie sich das INI-File im lokalen Umfeld verhält bzw. ich das definieren kann, um möglichst immer gleich interpretierte Parameter zu erhalten.

Für alle Euren Input und die Diskussion aber ein herzliches "Danke!". Momentan setze ich die FormatSettings zu Beginn beim Schreiben und Lesen - das scheint erstmal zu tun. Ich überlegen noch, ob ich eine Klasse ableite, die die entsprechenden Settings automatisch mitbringt.

Ciao,
Photor

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: INI-File: welches Format beim Lesen und Schreiben?

Beitrag von Timm Thaler »

Mathias hat geschrieben:
Mo 1. Jun 2020, 12:58
"in die GUI" ?
Habe ich da etwas verpasst ?
https://wiki.freepascal.org/TXMLPropStorage/de
https://wiki.freepascal.org/TINIPropStorage

Du setzt das Icon in die GUI, machst die Einstellungen zu Name, Pfad... und legst für die GUI-Elemente (Windows, Buttons, Checkboxen, Zahlenfelder...) fest, welche Eigenschaften mit welchem Namen gespeichert werden soll. Abspeichern der Werte beim Beenden und Restore beim Starten des Programm erfolgen dann automatisch.

Mathias
Beiträge: 6165
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: INI-File: welches Format beim Lesen und Schreiben?

Beitrag von Mathias »

Ich habe es mir angeguckt. Die ist eine rechte klick Übung.
Ich ziehe den manuellen Zugriff über XMLConf vor.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: INI-File: welches Format beim Lesen und Schreiben?

Beitrag von wp_xyz »

Mathias hat geschrieben:
Mi 3. Jun 2020, 16:34
Ich habe es mir angeguckt. Die ist eine rechte klick Übung.
Ich ziehe den manuellen Zugriff über XMLConf vor.
Ich bin auch einer, der lieber Code tippt - da weiß man, was passiert.

Aber eigentlich sind die *PropStorage-Komponenten ziemlich genial, und das möchte ich hier richtigstellen: Was auf der wiki-Seite (https://wiki.freepascal.org/TXMLPropStorage/de) beim bloßen Überfliegen wahrscheinlich nicht ins Auge fällt, ist dass sie mit der Eigenschaft SessionProperties des Formulars zusammenarbeiten. Da gibt es einen relativ komplexen Property-Editor (Button '...'), in dem alle Komponenten auf dem Formular mit den jeweiligen Published-Properties aufgelistet sind. Die "Klick-Übung" besteht darin, für jede Komponente, für die man etwas speichern möchte, die entsprechende Eigenschaft zu selektieren (geht auch für mehrere mit CTRL+Klick) und "Add" zu klicken. Die meisten der Properties und Komponenten sind für diesen Zweck uninteressant. Wichtig wahrscheinlich: Left, Top, Width, Height, WindowState des Formulars. Dann noch ein XMLPropStorage oder INIPropStorage aufs Formular geklickt, keine weitere Angaben nötig - fertig. So schnell kriege ich keinen Code getippt, wenn ich Fenster-Position/Größe speichern will. Und bei länderspezifischen Daten wird automatisch "neutral" gespeichert, d.h. das Feld "Value" 3,14 eines FloatSpinEdit landet als 3.14 in der XML-Datei, obwohl meine Ländereinstellung ein Komma als Dezimaltrenner haben; und das Datum eines DateTimePickers wird als serieller Integer gepeichert (ohne Datums-Formatierung).

Mathias
Beiträge: 6165
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: INI-File: welches Format beim Lesen und Schreiben?

Beitrag von Mathias »

Du hast mich gerade auf eine Idee gebracht. WindoeState könnte ich bei mir noch einbauen.
Bei der manuellen Art, muss ich nur eine Zeile eintippen und ich habe es für alle Formulare meines Projektes.
Mit ProgStore muss ich das bei jedem Form nachholen .
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: INI-File: welches Format beim Lesen und Schreiben?

Beitrag von wp_xyz »

Mathias hat geschrieben:
Mi 3. Jun 2020, 22:29
Bei der manuellen Art, muss ich nur eine Zeile eintippen und ich habe es für alle Formulare meines Projektes.
Mit ProgStore muss ich das bei jedem Form nachholen .
Naja, SessionProperties ist ein String, und den kannst du natürlich von einem Formular in alle anderen kopieren, genauso wie du die eingetippte Zeile bei jedem Formular wiederholen musst (es sei denn, alle Formulare haben einen gemeinsamen Vorfahren, aber da reicht es auch, SessionProperties nur einmal im Vorfahren einzutragen). Setzt natürlich voraus, dass jeweils dieselben Properties zu speichern sind. Unentschieden...

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: INI-File: welches Format beim Lesen und Schreiben?

Beitrag von Timm Thaler »

Mathias hat geschrieben:
Mi 3. Jun 2020, 22:29
WindoeState könnte ich bei mir noch einbauen.
Bei der manuellen Art, muss ich nur eine Zeile eintippen und ich habe es für alle Formulare meines Projektes.
Oh Vorsicht, so trivial ist WindowState nicht. Maan muss da unterscheiden zwischen den verschiedenen Zuständen. Zum Beispiel kann ein Programm auch geschlossen werden, wenn es minimized ist, sollte dann aber nicht als solches restored werden. Und bei maximised die richtigen Wiederherstellungspositionen zu finden ist auch nicht trivial.

https://wiki.freepascal.org/Remember_fo ... n_and_size

Mathias
Beiträge: 6165
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: INI-File: welches Format beim Lesen und Schreiben?

Beitrag von Mathias »

Oh Vorsicht, so trivial ist WindowState nicht. Maan muss da unterscheiden zwischen den verschiedenen Zuständen.
Ich werde es nicht einbauen, war nur mal so eine Idee.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten