Moin,
bevorzugen würde ich Objeklisten, wenn ganze Objekte gespeichert werden sollen.
Deine Aufgabe scheint hier zu sein, verschiedene Eigenschaften unterschiedlichster
Objekte zu befüllen, zu sichern. Da neige ich zur bewährten StringList zu greifen.
Hier einige Beispiele
1. Laden / Speichern
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
tempStringList : TStringList;
fileName : String;
begin
fileName := 'c:\temp\myfile.txt';
tempStringList := TStringList.Create;
try
tempStringList.LoadFromFile(fileName); {Load string from text file}
showmessage( tempStringList.Text);
tempStringList.SaveToFile(fileName); {save the text in a file }
finally
tempStringList.Free;
end;
end;
2. Quellcodebasiertes Befüllen
Delphi-Quellcode:
ar
animals : TStringList; // Define our string list variable
i : Integer;
begin
// Define a string list object, and point our variable at it
animals := TStringList.Create;
// Now add some names to our list
animals.Add('Cat');
animals.Add('Mouse');
animals.Add('Giraffe');
// Now display these animals
for i := 0 to animals.Count-1 do
ShowMessage(animals[i]); // animals[i] equates to animals.Strings[i]
// Free up the list object
animals.Free;
end;
3, Befüllen / Auslesen von Namen und zugehörigen Werten
Delphi-Quellcode:
var
names : TStringList; // Define our string list variable
ageStr : String;
i : Integer;
begin
// Define a string list object, and point our variable at it
names := TStringList.Create;
// Now add some names to our list
names.CommaText := 'Neil=45, Brian=63, Jim=22';
// And now find Brian's age
ageStr := names.Values['Brian'];
// Display this value
ShowMessage('Brians age = '+ageStr);
// Now display all name and age pair values
for i := 0 to names.Count-1 do
begin
ShowMessage(names.Names[i]+' is '+names.ValueFromIndex[i]);
end;
// Free up the list object
names.Free;
end;
4. Setzen von Namen-Wert-Kombinationen aus einem String
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
SL: TStringList;
Temp: string;
i: Integer;
begin
SL := TStringList.Create;
SL.Delimiter := '|';
SL.QuoteChar := '"';
SL.StrictDelimiter := True;
SL.DelimitedText := 'O=0 | ! .!=!.!';
Temp := 'Count: ' + IntToStr(SL.Count) + #13;
for i := 0 to SL.Count - 1 do
Temp := Temp + Format('Name: %s Value: %s'#13,
[SL.Names[i], SL.ValueFromIndex[i]]);
ShowMessage(Temp);
end;
Für das Speichern/Laden von einigen Eigenschaften ist das gutn machbar.
Viele Grüße // Martin