Zitat von
richard_boderich:
@Maximov, guck mal bitte hier da ist das project an dem ich arbeite und eine Definition meines Objectes. Ist ne etwas fruehere version also sei nicht so streng mit mir.
...
Da controlls komponenten sind und man eben diese mit dem Component-streaming-system von delphi serialisieren kann, bietet es sich doch an zB. den TWriter zum speichern zu verwenden. Das wäre in etwa so:
Delphi-Quellcode:
myWrite:TWriter;
..
myWrite.WriteComponent(myMapObject);
...allerdings hast du so keine liste und geht evtl. nicht auf das eigentliche problem ein. Interessant wäre es zu wissen, was du letztendlich erreichen willst?
Zitat:
Apropos, was ist ein generischer Serialisierer???
Ein Serialisiere, also eine instanz, welche den inneren zustand von objekten in eine serielle representation (stream) verwandelt und dies sehr allgemein gehalten, sodass der serialisierer keine kenntnis von den tatsächlichen objekten haben braucht. Ein Deserialisierer würde aus dem stream dann wieder konkrete objekte machen.
So könnte ein solcher serialiserer aufgebaut sein:
Delphi-Quellcode:
type
ISerializerStrategy = interface();
function GetNameOfClass(aClass:TClass):string;
function GetClassByName(const Name:string):TClass;
...
end;
TObjectSerializer = class
protected
procedure SerializeObject(aObject:TObject);
public
constructor create(stream:TStream; SerializerStrategy:ISerializerStrategy);
procedure SerializeObjects(List:TObjectList);
end;
...
// verwende:
var
Serializer:TObjectSerializer;
...
Serializer:=TObjectSerializer.Create(myStream, myStrategyImplementation);
Serializer.SerializeObjects(myObjectList);
So in etwa
Wobei das auch noch nicht sonderlich generich ist, da geht noch einiges mehr. Über die strategy kann der serialisieren rückfragen an den programmirer stellen, sodass das system keine ahnung haben braucht wo irgendwelche klassen registriert sind etc. zB. könnte man die strategy auch fragen, welche object überhaupt serialisiert werden sollen etc. Is so auch nur ne idee.
Zitat:
ich dachte die
DP collection speichert alles was irgentwie Objectmaessig ist???
die dpCollection speichert nur collection items, welche du allerdings als container für TPersistent abkömmlinge konfigurieren kannst.
mâxîmôv.
{KDT}