Hallo zusammen,
ich möchte gerne den Inhalt einer Combobox in einer INI-Datei speichern und wieder laden.
Im Gegensatz zu den meisten anderen Themen hier im Forum, möchte ich
alle Werte der Combobox speichern und laden.
Da der Nutzer den Inhalt der Combobox nach Bedarf ändern kann, weiß ich nie wie viele Items in derCombobox sind.
So schreibe ich in die Ini. Das klappt auch.
Delphi-Quellcode:
for i:=0 to (cbbOE.items.count -1) do // Inhalt der Combobox in Ini schreiben
begin
with TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')) do
begin
WriteString('Organisationseinheit', IntToStr(i), cbbOE.items[i]);
Free;
end;
end;
Beim Lesen der Ini und Beschreiben der Combobox habe ich jetzt das Problem, dass ich nicht weiß wie viele Items die Combobox haben wird.
Wenn ich die Combobox standardmaäßg leer lasse, und einfach mit der Ini beschreibe, kommt eine Fehlermeldung, sinngemäß 'Maximale Anzahl an Items überschritten' und das Programm stürzt ab.
Meine Momentane, nicht sehr elegante Lösung sieht so aus:
Delphi-Quellcode:
for i:=0 to 99 do //
begin
with TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')) do
begin
cbbOE.items[i]:=ReadString('Organisationseinheit', IntToStr(i),'');
Free;
end;
end;
Ich erzeuge mit also 100 freie Item-Plätze und beschreibe diese dann mit der Ini. Da ich aber in der Regel nur 10-30 Plätze benötige, habe ich jede Menge leere Felder in der Combobox.
Wie kann ich das eleganter lösen.
Notfalls hatte ich mit überlegt über die for schleife nach leeren Feldern zu suchen und diese dann wieder zu löschen. Gefällt mir nicht und hat programmiertechnisch nicht geklappt.
Sowas wie
if cbbOE.items[i]='' then cbbOE.Items[i].Delete;
ging natürlich nicht.
Jetzt nochmal die Frage:
Wie kann ich die Combo beschreiben ohne die maximale Anzahl der Items zu überschreiten und ohne leere Felder zu haben?
Danke im Vorraus!