Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ini-Datei und Sections erzeugen (https://www.delphipraxis.net/152085-ini-datei-und-sections-erzeugen.html)

Cogito 10. Jun 2010 15:36

ini-Datei und Sections erzeugen
 
Hallo zusammen,

das ich mit Delphi mittels der IniFiles unit Ini-Dateien auslesen kann weiss ich, aber kann ich auch komplett neue erstellen und Sections einfügen?

DeddyH 10. Jun 2010 15:37

AW: ini-Datei und Sections erzeugen
 
Aber natürlich.

H4ndy 10. Jun 2010 15:38

AW: ini-Datei und Sections erzeugen
 
Klar, einfach die neuen Daten unter der gewuenschten Section speichern (wird automatisch angelegt) (Funktionen Write<Typ> benuzten).

David Martens 10. Jun 2010 16:43

AW: ini-Datei und Sections erzeugen
 
Da wir ja im XML-Zeitalter sind empfehle ich das hier: XML Dateien statt Ini Dateien benutzen
Wenn bei Create(FileName: string) die Datei nicht vorhanden ist wird sie neu angelegt.
Wenn bei Write...(Section, Key, Value) Section/Key nicht vorhanden ist wird es angelegt.

Und wie im Header beschrieben gilt das Gleiche für die normale ini-Klasse auch.

Gruß David

himitsu 10. Jun 2010 16:47

AW: ini-Datei und Sections erzeugen
 
Komplett neu erstellen =

DeleteFile und danach enfach über TIniFile neu erstellen.

oder alle alten Sektionen löschen und neue Daten eintragen

oder TMemIniFile ohne Dateizugriff erstellen, eigene Daten eintragen und dann über die alte Datei drüberspeichern.

Cogito 15. Jun 2010 10:43

AW: ini-Datei und Sections erzeugen
 
Zitat:

Zitat von David Martens (Beitrag 1027894)
Da wir ja im XML-Zeitalter sind empfehle ich das hier: XML Dateien statt Ini Dateien benutzen
Wenn bei Create(FileName: string) die Datei nicht vorhanden ist wird sie neu angelegt.
Wenn bei Write...(Section, Key, Value) Section/Key nicht vorhanden ist wird es angelegt.

Und wie im Header beschrieben gilt das Gleiche für die normale ini-Klasse auch.

Gruß David

Das ist ja fein, die Flexibilität der ini-Files aber als xml.
Aber wie ist das nun wenn ich z.B. eine Section habe und zur Laufzeit nicht genau weiss wieviele Einträge sich darin befinden, z.B. sowas:

Code:
[Mappings]
Eintrag1=Value1
Eintrag2=Value2
..
..
So eine Mapping-Liste könnte je nach Mappinganzahl variieren, wie kann ich sowas handeln?

oki 15. Jun 2010 10:46

AW: ini-Datei und Sections erzeugen
 
ReadSection

Gruß oki

himitsu 15. Jun 2010 10:51

AW: ini-Datei und Sections erzeugen
 
oder notfalls auch
Code:
[Mappings]
Anzahl=2
Eintrag1=Value1
Eintrag2=Value2

Cogito 15. Jun 2010 11:22

AW: ini-Datei und Sections erzeugen
 
Zitat:

Zitat von himitsu (Beitrag 1028963)
oder notfalls auch
Code:
[Mappings]
Anzahl=2
Eintrag1=Value1
Eintrag2=Value2

Wie könnte ich denn in deinem Fall über den Abschnitt "Mappings" iterieren, wenn ich die Anzahl habe?

himitsu 15. Jun 2010 11:32

AW: ini-Datei und Sections erzeugen
 
Delphi-Quellcode:
Format('Eintrag%d', [i])
oder
Delphi-Quellcode:
'Eintrag' + IntToStr(i)
Auf diese Weise bekommt auch mal mehrere "Listen" in eine Sektion.

idefix2 15. Jun 2010 12:13

AW: ini-Datei und Sections erzeugen
 
Zitat:

Da wir ja im XML-Zeitalter sind empfehle ich das hier: XML Dateien statt Ini Dateien benutzen
Wenn bei Create(FileName: string) die Datei nicht vorhanden ist wird sie neu angelegt.
Wenn bei Write...(Section, Key, Value) Section/Key nicht vorhanden ist wird es angelegt.

Und wie im Header beschrieben gilt das Gleiche für die normale ini-Klasse auch.
Und was wäre der Vorteil von XML Dateien an Stelle von ini-dateien zum Speichern von Initialisierungsdaten, ausser dass XML Dateien mühsamer zu editieren sind und man sich dabei leichter vertut, wenn man beim Kunden auf die Schnelle einen Parameter von Hand ändern will, für den man bewusst keinen Dialog erstellt hat, weil der Kunde da möglichst nichts ändern soll. Nicht alles, was neueste Mode ist, muss immer Vorteile bringen.

Cogito 15. Jun 2010 12:59

AW: ini-Datei und Sections erzeugen
 
Zitat:

Zitat von himitsu (Beitrag 1028965)
Delphi-Quellcode:
Format('Eintrag%d', [i])
oder
Delphi-Quellcode:
'Eintrag' + IntToStr(i)
Auf diese Weise bekommt auch mal mehrere "Listen" in eine Sektion.

Das Problem ist dabei, dass es bei mir nicht gleichbleibende Einträge sind im Bereich Mappings. In dieser Section werden Feldermappings abgelegt also eher sowas wie:

Code:
[Mappings]
Nachname=FeldBTabelleX
Geburtsdatum=FeldCTabelleX
...
Wie könnte ich denn hierbei über die Mappings-Section iterieren?

DeddyH 15. Jun 2010 13:14

AW: ini-Datei und Sections erzeugen
 
Das wurde doch schon genannt: Delphi-Referenz durchsuchenTIniFile.ReadSection

Cogito 15. Jun 2010 13:34

AW: ini-Datei und Sections erzeugen
 
Zitat:

Zitat von DeddyH (Beitrag 1028994)
Das wurde doch schon genannt: Delphi-Referenz durchsuchenTIniFile.ReadSection

Ja, aber ich weiss doch zur Laufzeit nicht wieviele Werte unterhalb der Section stehen und ich weiss auch nicht wie die heissen. Unter meiner Mappings section sollen gemappte Felder abgelegt werden und die werden vom User gewählt...

DeddyH 15. Jun 2010 13:58

AW: ini-Datei und Sections erzeugen
 
Zitat:

Reads all the key names from a specified section of an INI file into a string list.
Damit hast Du doch alle Infos, die Du brauchst.

Cogito 15. Jun 2010 15:01

AW: ini-Datei und Sections erzeugen
 
Zitat:

Zitat von DeddyH (Beitrag 1029006)
Zitat:

Reads all the key names from a specified section of an INI file into a string list.
Damit hast Du doch alle Infos, die Du brauchst.


Kann ich eigentlich auch einen TQuery.SQL string in einer ini-Datei ablegen? Der bricht bei mir immer das FROM Statement in eine neue Zeile um und wird dann mit ReadString nicht mehr ausgelesen...

himitsu 15. Jun 2010 15:23

AW: ini-Datei und Sections erzeugen
 
Ja, kann man, aber

Werte dürfen/sollten keine Steuerzeichen enthalten und dazu zählt auch der Zeilenumbruch, welcher bestimmt vor deinem FROM liegt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz