AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi lesen vin Ini-Datei mit variablem Item-Haeder
Thema durchsuchen
Ansicht
Themen-Optionen

lesen vin Ini-Datei mit variablem Item-Haeder

Ein Thema von EccoBravo · begonnen am 2. Mai 2007 · letzter Beitrag vom 2. Mai 2007
Antwort Antwort
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#1

lesen vin Ini-Datei mit variablem Item-Haeder

  Alt 2. Mai 2007, 09:23
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:
[Gruppe1]
Element1='aaa'
Element2='bbb'
Element3='ccc'
[Gruppe2]
Element1='ddd'
Element2='eee'
Element3='fff'
[Gruppe3]
Element1='aaa'
Element2='bbb'
Element3='ccc'
...
Warum ich ein IniFile-Konstrukt zum Messdatensammeln mißbrauchen will hat einen ganz einfachen Grund:
Ich will Doppelteingaben von Messwertsätzen vermeiden!

Und das hätte ich mir wie folgt ausgedacht:

Delphi-Quellcode:
...
Ini.WriteString(Messzeitpunkt, ElementeName1, Elementewert1);
Ini.WriteString(Messzeitpunkt, ElementeName2, Elementewert2);
Ini.WriteString(Messzeitpunkt, ElementeName3, Elementewert3);
...
Als FileInhalt bekomme ich folgendes:

Delphi-Quellcode:
[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'
...
Wenn ich nun unter [01.05.2007 10:30] den Elementewert1 von 'aaa' auf 'xxx' ändern will geht das ganz einfach, es wird nur
das Element unter


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.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#2

Re: lesen vin Ini-Datei mit variablem Item-Haeder

  Alt 2. Mai 2007, 09:30
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.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: lesen vin Ini-Datei mit variablem Item-Haeder

  Alt 2. Mai 2007, 09:35
http://www.kuknet.de/tutorial1.pdf
Blackheart
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#4

Re: lesen vin Ini-Datei mit variablem Item-Haeder

  Alt 2. Mai 2007, 09:36
Ja, Hilfe für TIniFile öffnen und ReadSection, ReadSections, ReadSectionValues finden.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: lesen vin Ini-Datei mit variablem Item-Haeder

  Alt 2. Mai 2007, 09:58
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz