Re: ComboBox per Hand füllen
Die "Ini-Schleife" könnte z.B. so aussehen:
Delphi-Quellcode:
Die Ini hätte dann beispielsweise folgendes Aussehen:
for i := 0 to ComboBox.Items.Count - 1 do
Ini.WriteString('Items',IntToStr(i),ComboBox.Items[i]);
Code:
[Items]
0=UT 1=MESZ 2=MEZ |
Re: ComboBox per Hand füllen
Hi DeddyH,
soweit klappts jetzt.
Delphi-Quellcode:
Das Auslesen der INI muss ins formCreate oder?
procedure TfrmMain.cbox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var ini : TiniFile; i: Integer; begin with TComboBox(Sender) do if Key = VK_RETURN then if Items.IndexOf(Text) < 0 then begin ItemIndex := Items.Add(Text); try {das ist die Schleife zum Erzeugen des Eintrags in der INI } ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+'config.ini'); for I := 0 to cbox1.Items.Count - 1 do ini.WriteString('TimeZone',intToStr(i),cbox1.Items[i]); finally ini.Free; end; end; end; Würde das dann so aussehen?
Delphi-Quellcode:
Für heute mach ich erstmal Schluss und werde morgen dann das einlesen mal üben ;-)
try
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+'config.ini'); for I := 0 to cbox1.Items.Count - 1 do cbox1.Items[i] := ini.readString('TimeZone',intToStr(i),cbox1.Items[i]); // Ist diese Zeile so richtig?? finally ini.Free; end; Danke, Karsten__________________________________________________ _______________________ www.deepSkyObserver.de |
Re: ComboBox per Hand füllen
Jo, das macht Sinn.
|
Re: ComboBox per Hand füllen
Hi DeddyH,
ich dachte auch das das Sinn hat, funzt aber leider nicht.
Delphi-Quellcode:
Ich hab's mit F7 durchgesteppt und festgestellt, dass nur die Werte gelesen werden, die schon vorher beim Objekt unter Items >> Strings im Stringlisteneditor eingetragen waren. In der INI stehen aber 10 Stück, also wird die INI nicht ausgelesen. Ist die Schleife falsch oder wie kann ich das rausfinden? Weiß gerade mal wieder nicht weiter.. :gruebel:
procedure TfrmMain.FormCreate(Sender: TObject);
var ini : TiniFile; I: integer; begin try ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+'config.ini'); for I := 0 to cbox1.Items.Count - 1 do begin cbox1.Items[i] := ini.ReadString('TimeZone',intToStr(i),cbox1.Items[i]); //combobox mit den Werten aus der INI befüllen showMessage(intToStr(i)); end; finally ini.Free; end; end; Gruß, Karsten |
Re: ComboBox per Hand füllen
Das liegt an:
Delphi-Quellcode:
du liest hier nur so viele Einträge aus der ini, wie eh schon in der Combobox drin sind. Was du brauchst, ist die Anzahl aller Werte in der INI.
for I := 0 to cbox1.Items.Count - 1 do
|
Re: ComboBox per Hand füllen
Versuch es mal mit
Delphi-Quellcode:
procedure TfrmMain.FormCreate(Sender: TObject);
var ini : TiniFile; begin ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+'config.ini'); try Ini.ReadSectionValues('TimeZone',cbox1.Items); finally ini.Free; end; end; |
Re: ComboBox per Hand füllen
Nein der Fehler passiert beim Abspeichern. Es werden nur Werte in die ini geschrieben, die nachträglich eingefügt werden. Um alle so wie geplant einlesen zu können, müssen alle Werte in die ini geschrieben werden.
Grüße, Messie |
Re: ComboBox per Hand füllen
HI deddyH,
jetzt habe ich den lustigen Effekt, dass beim Abspeichern alles doppelt angzeigt wird und einmal mehr in die INI gespeichert wird. Wenn ichs drei mal aufrufe siehts wie folgt aus: [TimeZone] 0=0=0=UT 1=1=1=MESZ 2=2=2=MEZ 3=3=3=myTimeZone1 4=4=4=myTimeZone2 5=5=5=myTimeZone3 6=6=6=myTimeZone4 7=7=7=myTimeZone5 8=8=8=myTimeZone6 9=9=9=myTimeZone7 Hi Messi, ich verstehe nicht so ganz was du meinst, aber habe nach diesem Ergebnis so eine dunkle Ahnung was du jetzt meinen könntest. |
Re: ComboBox per Hand füllen
*Oops*, dann bleibt wohl nur, ReadSectionValues auf eine temporäre Stringliste anzuwenden und dort je Zeile alles bis zum Gleichheitszeichen rauszulöschen. Anschließend den Items zuweisen. Wenn jemand einen besseren Vorschlag hat, immer her damit, mir gefällt das so nämlich auch nicht, hab aber heute irgendwie ein Brett vor dem Kopf.
|
Re: ComboBox per Hand füllen
Moin, Moin,
na, das hieße an den Symptomen herumzudoktern. Wie messie schon bemerkte: Der Fehler entsteht ja beim Speichern. Ist der Code aus #12 noch aktuell? Idee: Vor dem Speichern zunächst die Section komplett löschen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 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