Einzelnen Beitrag anzeigen

Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#11

AW: INI File Schreiben und auslesen

  Alt 14. Mär 2014, 02:00
Hallo,

ich gebe Deinen Code jetzt mal in gekürzter Fassung wieder:
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
const
  Sektion='language';
  Eintrag='last language';
var
  ini: TIniFile;
begin
  ini := TIniFile.Create(filename);
  try
    ini.WriteString(Sektion,Eintrag,ComboBox1.Text);
  finally
    Ini.Free;
  end;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  ini: TIniFile;
begin
  ini := TIniFile.Create(filename);
  try
    ComboBox1.Text := Ini.ReadString('Sektion', 'Eintrag', 'Wert');
  finally
    ini.Free;
  end
end;
Aua!

Dein FormClose schreibt:
Code:
[language]
last language=das was in ComboBox1.Text steht
Dein FormCreate ließt (bzw. möchte lesen):
Code:
[Sektion]
Eintrag=
Da vermutlich weder der Abschnitt Sektion, noch der Schlüssel Eintrag existiert bzw. dem Schlüssel Eintrag kein Wert zugewiesen ist, steht am Ende der string 'Wert' in ComboBox1.Text drin - und das ist dann schon richtig so.

Versuche es mal so (das mit dem filename musst Du halt noch ergänzen):
Delphi-Quellcode:
const
  Sektion = 'language';
  Eintrag = 'last language';

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  ini: TIniFile;
begin
  ini := TIniFile.Create(filename);
  try
    ini.WriteString (Sektion, Eintrag, ComboBox1.Text);
  finally
    Ini.Free
  end;

procedure TForm1.FormCreate(Sender: TObject);
var
  ini: TIniFile;
begin
  ini := TIniFile.Create(filename);
  try
    ComboBox1.Text := Ini.ReadString (Sektion, Eintrag, 'Default');
  finally
    ini.Free
  end
end;
[EDIT]
Scheinbar ändert sich filename in Deiner Anforderung nicht; deshalb wäre es sinnvoll, dass Du Dir diese Geschichte nur einmal (FormCreate) zusammenschraubst und anschließend nur noch darauf zugreifst. Also:
Delphi-Quellcode:
type
  TForm1 = class (TForm)
  private
    FIniFileName : string;
  end;

procedure TForm1.CloseForm (Sender : TObject);
begin
  ini := TIniFile.Create (FIniFileName);

  // Rest wie gehabt
end;

procedure TForm1.CreateForm (Sender : TObject);
begin
  FIniFileName := ExtractFilePath (ParamStr (0)) + 'ini\einstellungen.ini';
  
  // Rest wie gehabt
end;
[/EDIT]

Gruß
Volker Zeller

Geändert von Volker Z. (14. Mär 2014 um 03:00 Uhr)
  Mit Zitat antworten Zitat