Tja also, da ich dafür selber ne kleine Ewigkeit gebraucht hab, werd ich das einfach mal der breiten Masse vortragen, falls mal wieder jemand in der Misere steckt
An der Stelle ein Dankeschön an Onz, der mich im Endeffekt auf die Lösung gestossen hat
Also, mit Prozedur 1 lese ich aus 2 Edit-Feldern den String aus, und speichere ihn zuerst in einer ValueList, und zeitgleich in einer Ini-Datei. Man kann natürlich auch in die Registry schreiben, je nach belieben, am Code ändert sich dadurch nicht viel.
Die 2. Prozedur liest den Inhalt aus einer Ini-Datei (respektive der Registrierung) aus, um sie dann in der ValueList zu zeigen.
Und schlussendlich, Prozedur 3, das zeitgleiche Löschen eines Eintrages aus der ValueList und der Ini-Datei (respektive Registrierung).
Delphi-Quellcode:
// PROZEDURE 1: SPEICHERN
// Nur dann, wenn die Edit-Felder überhaupt Text enthalten
if (Edit1.Text <>'') AND (Edit2.Text <> '') then
begin
// Zuerst die Value-List mit den Werten füllen, das True am Ende
// steht für "Anhängen", hätte ich hier ein False, und würde der
// Wert aus Edit1 schon existieren, würde der zugehörige Value
// von Edit1 mit dem neuen Inhalt von Edit2 überschrieben werden
ValueList.InsertRow(Edit1.Text,Edit2.Text, True);
//Edit-Felder zurücksetzen
Edit1.Text := '';
Edit2.Text := '';
//festlegen, in welche Datei wir schreiben
ini := TIniFile.Create('.\connections.ini');
// Schleife, um alle Werte der Value-List in die Ini zu schreiben
// warum for i := 1? Bei Null würde auch der Tabellenkopf mit
// mit gespeichert werden!
for i := 1 to (ValueList.RowCount - 1) do
begin
// Zuerst den Key, logisch, und dann den dazugehörigen Wert,
// den wir leider nicht über den Index sondern über den
// Key direkt rausfinden!
ini.WriteString('Sektion1', ValueList.Keys[i],
ValueList.Values[ValueList.Keys[i]]);
end;
ini.Free;
end;
// Fertig :)
Delphi-Quellcode:
// Prozedure 2: Aus INI laden:
//Der Einfachheit halber arbeiten wir hier mit ner Stringlist:
Sections := TStringList.Create;
ini := TIniFile.Create('.\connections.ini');
// Zuerst weisen wir der Stringlist die Key´s zu, danach
// können wir die Werte aus der INI auslesen und den entsprechenden
// Key´s in der StringList zuordnen
ini.ReadSection(Sektion1, Sections);
ini.ReadSectionValues('Sektion1', Sections);
// Dann mal wieder n Schleife, um die Werte aus der StringList
// in die ValueList zu übernehmen
for i := 0 to Sections.Count - 1 do
// Hierzu kann ich nicht viel sagen, einfach abtippen, verstehen
// muss man es einfach selber :)
ValueList.InsertRow(Sections.Names[i], Sections.Values[Sections.Names[i]], True);
ini.Free;
Sections.Free;
// und das war der Ladervorgang
Delphi-Quellcode:
// Prozedure 3: Das Löschen
// hier brauch man glaub ich nicht viel erklären, hier wird einfach
// der Wert aus der Ini gelöscht, der im Moment in der ValueList
// markiert ist
ini := TIniFile.Create('.\connections.ini');
ini.DeleteKey('Connections', ValueList.Keys[ValueList.Row] );
ini.Free;
// Und erst danach können wir den Wert selber auch aus der
// Valuelist entfernen
Connections.DeleteRow(Connections.Row);
// und fertich :)
Sodele, ich hoffe das war nicht zu umständlich beschrieben und einigermaßen verständlich.
Das ganze ist vielleicht nicht unbedingt das Ei des Kolumbus' und ein
Prof in Delphi zaubert sowas in Sekunden hin, aber ich kann nur von mir ausgehen: Mir hätte sowas 12 Stunden Recherche erspart
und ich denke
einem Delphi-Anfänger der die gleiche Frage hat bleibt auch eine Menge Arbeit erspart!
mit freundlichen Grüßen
tyler
-- Fragen? Fragen!
--
[edit=Matze]Code formatiert. Mfg, Matze[/edit]