Datenspeicherung in INI-Dateien

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
LazGreenhorn
Beiträge: 7
Registriert: Do 7. Feb 2013, 20:01

Datenspeicherung in INI-Dateien

Beitrag von LazGreenhorn »

Hallo!
Nachdem ich Schwierigkeiten mit einer ListBox hatte, habe ich nun eine Frage zu einer INI-Datei, in der ich Daten speichern möchte.

Code: Alles auswählen

procedure TfmDaten.btSpeichernClick(Sender: TObject);
var
  varAlter, a: Integer;
begin
  ini:= TIniFile.Create('d:\Daten.ini');
  a:= (StrToInt(laedAlter.Text) + 29) * 7;
  try
    ini.WriteString(laedName.Text, 'Name', laedName.Text);
    ini.WriteInteger(laedName.Text, 'Alter', a);
    ini.ReadSections(lbDaten.Items);
  finally
    ini.Free;
  end;
end;
Das wäre mein Vorschlag.
Mit den Beispieldaten (Franz, 16 Jahre; Karin, 78; Hans, 20; Laura, 55) komme ich zu folgendem INI-Inhalt:

Code: Alles auswählen

[Franz]
Name=Franz
Alter=16
 
[Karin]
Name=Karin
Alter=78
 
[Hans]
Name=Hans
Alter=20
 
[Laura]
Name=Laura
Alter=55
Meine Frage: Das Alter der Personen gebe ich in laedAlter ein, etc. Zu diesem Wert addiere ich 29 und multipliziere das ganze mit 7:

Code: Alles auswählen

varAlter:= StrToInt(laedAlter.Text);
  a:= (varAlter + 29) * 7;
Warum wird dann in der INI-Datei das Alter gespeichert, das ich eingegeben habe? Ich habe es doch geändert und in a gespeichert. In die INI-Datei schreibe ich dann auch den Wert von a.

Ich vermute, ich hab da einfach irgendetwas übersehen...

Danke schonmal für Vorschläge!

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: Datenspeicherung in INI-Dateien

Beitrag von Thomas B. »

Probier mal ein ini.UpdateFile bevor Du die Daten per ReadSections aus dem ini-File wieder einliest.

LazGreenhorn
Beiträge: 7
Registriert: Do 7. Feb 2013, 20:01

Re: Datenspeicherung in INI-Dateien

Beitrag von LazGreenhorn »

Problem gelöst:-)

Code: Alles auswählen

try
    ini.WriteString(laedName.Text, 'Name', laedName.Text);
    ini.WriteInteger(laedName.Text, 'Alter', a);
    ini.UpdateFile;
    ini.ReadSections(lbDaten.Items);
  finally
    ini.Free;
  end;
Ist irgendwie ganz logisch, nur wenn man nicht weiß, dass es so etwas wie UpdateFile gibt... :roll:

Dankeschön!!

Antworten