Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   INI File & ComboBox (https://www.delphipraxis.net/174101-ini-file-combobox.html)

floppybe 3. Apr 2013 14:02

INI File & ComboBox
 
Hallo Liebe DP'ler hallo Wicht,

vielleicht liest Wicht mit und kann mir auch Helfen.
Ich möchte meinem Programm die Mehrsprachigkeit spendieren.
Nun möchte ich aus der ComboBox in der die Sprachen sind das in ein INI File Speichern damit ich immer die
gleiche Sprache laden kann wie zuletzt gewählt.

Die INI erstellen habe ich verstanden:

Delphi-Quellcode:
uses IniFiles;

...

var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'einstellungen.ini';
  ini := TIniFile.Create(filename);
Aber ich raffe es nicht bei allen Postings wie ich die ComboBox auslesen kann und in die INI schreibe.
Ich habe das Tut vom Delphi Treff gelesen, aber dort schreiben Sie hart Codiert die INI. Und ich möchte das beim
ändern der Auswahl von der ComboBox machen.

Ich weis, Ihr macht es ungern Fertigen Delphi Code zu präsentieren aber ich komme mit meinem Verständnis nicht
weiter. Denn ich habe 4 weitere Form's bei denen ich dann die Combobox wieder auslesen würde aus der INI.

Ich habe ein Delphi XE3 Architect EDU.

Grüsse

Chris

DeddyH 3. Apr 2013 14:12

AW: INI File & ComboBox
 
Mir ist der Zusammenhang zwischen ComboBox und IniFile noch nicht ganz klar. Was genau steht in der ComboBox und was willst Du wohin speichern?

Jumpy 3. Apr 2013 14:16

AW: INI File & ComboBox
 
Ich verstehe jetzt nicht ganz genau, wo das Problem ist. Wie man in eine Ini schreibt bzw. daraus liest?

z.B. im OnChange Event der Combobox in die ini schreiben:
Delphi-Quellcode:
const
  Sektion='DerNameDerSektion';
  Eintrag='DerNameDesEintrages';
var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'einstellungen.ini';
  ini := TIniFile.Create(filename);
  ini.WriteString(Sektion,Eintrag,combobox1.Text);
  ini.Free;
end;
im OnCreate oder OnShow eines Formulares dann auslesen:
Delphi-Quellcode:
const
  Sektion='DerNameDerSektion';
  Eintrag='DerNameDesEintrages';
var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'einstellungen.ini';
  ini := TIniFile.Create(filename);
  combobox1.Text:=ini.ReadString(Sektion,Eintrag,combobox1.Text);
  //In einem Formular, in dem nur die Sprache gesetzt werden soll, wo also keine Combobox ist
  //muss natürlich entsprechend eine variable gefüllt oder eine Prozedur bedient werden:
  SpracheSetzen(ini.ReadString(Sektion,Eintrag,'Deutsch'));
  ini.Free;
end;

Klaus01 3. Apr 2013 14:18

AW: INI File & ComboBox
 
Hallo,

in Combobox.text steht der aktuell angezeigte Wert.

Grüße
Klaus

DeddyH 3. Apr 2013 14:28

AW: INI File & ComboBox
 
BTW: Wenn es sich nicht um eine portable Anwendung handelt, gehört sie ins Programme-Verzeichnis. Dort hast Du aber normalerweise als Standard-Benutzer keine Schreibrechte. Ich würde daher die Ini ins AppData-Verzeichnis des Benutzers verschieben, so hat jeder Benutzer seine eigenen Einstellungen.

Bummi 3. Apr 2013 14:33

AW: INI File & ComboBox
 
gerade im Druck daher kommentarlos ...

Code:
[english]
Button1=Button X
Button2=Button Y
[deutsch]
Button1=Knopf X
Button2=Knopf Y

Delphi-Quellcode:
uses Inifiles;

const
  C_IniFile = 'C:\temp\trans.ini';

procedure TForm1.ComboBox1CloseUp(Sender: TObject);
var
  ini: TInifile;
  sl: TStringList;
  i: Integer;
  c: TComponent;
begin
  sl := TStringList.Create;
  try
    ini := TInifile.Create(C_IniFile);
    try
      ini.ReadSectionValues(ComboBox1.Items[ComboBox1.ItemIndex], sl);
      for i := 0 to sl.Count - 1 do
      begin
        c := TComponent(FindComponent(sl.Names[i]));
        if Assigned(c) then
          (c as TControl).SetTextBuf(Pchar(sl.ValueFromIndex[i]));
      end;
    finally
      ini.Free;
    end;
  finally
    sl.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  ini: TInifile;
begin
  ini := TInifile.Create(C_IniFile);
  try
    ini.ReadSections(ComboBox1.Items);
  finally
    ini.Free;
  end;
end;

DeddyH 3. Apr 2013 14:40

AW: INI File & ComboBox
 
DRY
Delphi-Quellcode:
const
  ININAME = 'C:\temp\trans.ini';

...
ini:=TInifile.Create(ININAME);
Zum try-finally-Block sag ich jetzt mal nichts.

p80286 3. Apr 2013 15:30

AW: INI File & ComboBox
 
@DeddyH
[OT] Willst Dich schon jetzt als Papst bewerben:gruebel:
Er hat doch geschrieben, daß das bloß eine Anregung ist.[/OT]

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:33 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