Aber ohne inherited wird es nicht gehen.
Das glaube ich nicht wirklich.
Denn mein Object erbt die Methode SaveToFile() abgeleitet von TStringList. Das wiederum speichert ja nur die einzelnen Listeneinträge in einer Datei. Ich kann mir daher nicht vorstellen, dass ein inherited irgend etwas bzgl. der mit der Liste gespeicherten Objecte bewirken soll.
Im Moment sieht mein Code - sehr sehr unschön - so aus:
Delphi-Quellcode:
Type
TDish = Record // Record zum abspeichern
SystemID : Integer;
DishName : String[255];
DishType : Integer;
Price : Currency;
End;
// Liste in eine Datei speichern
Procedure TDishList.SaveToFile(Const FileName: String);
Var
I : Integer;
Buffer : TDish;
OutFile : File Of TDish;
Begin
If Count < 1 Then Exit; // es muss mind. 1 Eintrag da sein
AssignFile(OutFile, FileName); // Dateiname zuweisen
{$I-}
FileSetAttr(FileName, $00); // alle Attribute löschen
DeleteFile(PAnsiChar(FileName)); // Datei löschen und
ReWrite(OutFile); // neu anlegen
For I:=0 To Pred(Count) Do // gesamte Liste durchgehen
Begin
FillChar(Buffer, SizeOf(Buffer), 0); // Puffer leeren
Buffer.SystemID:=(Objects[I] As TDishes).SystemID;
Buffer.DishName:=(Objects[I] As TDishes).DishName;
Buffer.DishType:=(Objects[I] As TDishes).DishType;
Buffer.Price:= (Objects[I] As TDishes).Price;
Write(OutFile, Buffer); // Daten in Datei ablegen
End;
CloseFile(OutFile); // die Datei schließen
{$I+}
End;
Das laden dann analog. Aber das ist umständlich und kompliziert. Und wenn man das später mal warten will, dann muss man statt 5-7 Zeilen für WriteComponent() eben diese vielen behandeln.
Gruß, Alex
P.S. Ich liebe im Übrigen das With! Wenn ich größere Objecte habe, in denen ich - als welchen Gründe auch immer - bestimmte Properties in der Registry oder sonstwie speichern muss, dann spare ich mir etliche Zeilen Code auf diese Art und Weise. Das ist aber nur meine persönliche Meinung.