![]() |
lesen vin Ini-Datei mit variablem Item-Haeder
Hallo,
ich will unter Delphi7 ein Messdatenfile im Ini-File-Look schreiben. Der übliche Ini-File-Code hat ja folgendes Aussehen
Delphi-Quellcode:
...
Ini.WriteString(GruppenName, ElementeName1, Elementewert1); Ini.WriteString(GruppenName, ElementeName2, Elementewert2); Ini.WriteString(GruppenName, ElementeName3, Elementewert3); ...
Delphi-Quellcode:
Warum ich ein IniFile-Konstrukt zum Messdatensammeln mißbrauchen will hat einen ganz einfachen Grund:
[Gruppe1]
Element1='aaa' Element2='bbb' Element3='ccc' [Gruppe2] Element1='ddd' Element2='eee' Element3='fff' [Gruppe3] Element1='aaa' Element2='bbb' Element3='ccc' ... Ich will Doppelteingaben von Messwertsätzen vermeiden! Und das hätte ich mir wie folgt ausgedacht:
Delphi-Quellcode:
Als FileInhalt bekomme ich folgendes:
...
Ini.WriteString(Messzeitpunkt, ElementeName1, Elementewert1); Ini.WriteString(Messzeitpunkt, ElementeName2, Elementewert2); Ini.WriteString(Messzeitpunkt, ElementeName3, Elementewert3); ...
Delphi-Quellcode:
Wenn ich nun unter [01.05.2007 10:30] den Elementewert1 von 'aaa' auf 'xxx' ändern will geht das ganz einfach, es wird nur
[01.05.2007 10:30]
Element1='aaa' Element2='bbb' Element3='ccc' [01.05.2007 11:30]] Element1='ddd' Element2='eee' Element3='fff' [02.05.2007 10:30]] Element1='aaa' Element2='bbb' Element3='ccc' ... das Element unter
Delphi-Quellcode:
Ini.WriteString('01.05.2007 10:30' , ElementeName1, 'xxx');
neu schreiben. Mit dem Schreiben ist ja alles klar, aber wie verhält es sich mit dem Lesen dieser Files, ich habe ja einen variablen Gruppennamen, Wenn ich diesen vorher nicht weiß, findet der Ini.Readstring den ElementeEintrag ja nie. Hat jemand eine Idee, wie man dieses Problem lösen könnte? Vielen Dank und Grüße E. B. |
Re: lesen vin Ini-Datei mit variablem Item-Haeder
Kurz zur Hilfe,
eine Frage zur Vereinfachung der Fragestellung: Gibt es einen Befehl, mit dem ich alle GruppenNamen und ElementeNamen (nicht ElementeWerte) eines Ini-Files auslesen kann? Danke E. B. |
Re: lesen vin Ini-Datei mit variablem Item-Haeder
|
Re: lesen vin Ini-Datei mit variablem Item-Haeder
Ja, Hilfe für TIniFile öffnen und ReadSection, ReadSections, ReadSectionValues finden.
|
Re: lesen vin Ini-Datei mit variablem Item-Haeder
Hallo Ecco,
hinter TIniFile steht nicht nur ein "Look", sondern vor allem auch eine "Funktionalität". TIniFile kapselt nämlich den Zugriff auf die "uralten" Windows Steuerdateien (WIN.INI - GetProfileString, WriteProfileString, etc.). Dabei werden Änderungen aus Anwendungssicht "ungepuffert" sichtbar, weil für jeden Zugriff die ganze INI-Datei eingelesen - und bei Schreibzugriffen auch sofort wieder auf die Platte geschrieben wird. Konkurrierende Zugriffe werden nicht unterstützt und es gibt eine Größenbeschränkung (64KB unter WIN32). Für dein Programm arbeitest du vielleicht besser mit der gepufferten Komponente TMemIniFile. Ich kann nicht erkennen wie groß dein Risiko einer Doppeleintragung ist, aber auch ohne deine Anforderungen näher zu kennen würde ich keine INI-Datei verwenden. Deine Messdaten dürften uniform sein und da bietet sich eher eine CSV-Datei an. Das Format ist universell verwendbar, kann leicht per Script transformiert werden und das Hinzufügen eines neuen Mess-Satzes geht sehr schnell, da nur auf das Ende der Datei positioniert werden muss. Der timestamp aus deiner Section wird einfach zu einem zusätzlichen Feldwert. Doppeleintragungen können auch später noch über eine Auswertungsregel unterdrückt werden. Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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