Werte selbstdefinierter Variant-Typen laden und speichern
Nach oben zu Selbstdefinierte Variant-Typen kopieren und löschen
Ist der selbstdefinierte Variant-Typ einer veröffentlichten Eigenschaft als Wert zugewiesen, wird er standardmäßig in einen String umgewandelt, sobald die Eigenschaft in einer Formulardatei gespeichert wird, und aus einem String zurückgewandelt, sobald die Eigenschaft aus der Formulardatei gelesen wird. Sie können jedoch eigene Mechanismen zum Laden und Speichern von Werten selbstdefinierter Variant-Typen in einer gefälligeren Weise bereitstellen. Dazu muss der TCustomVariantType
-Nachfolger die Schnittstelle System.Classes.IVarStreamable aus Classes.pas implementieren
IVarStreamable
definiert die Methode StreamIn
zum Lesen eines Variant-Werts aus einem Stream und die Methode StreamOut
zum Schreiben des Werts in einen Stream. Beispielsweise implementiert TComplexVariantType
(in der Unit VarCmplx ) die IVarStreamable
-Methoden wie folgt:
Delphi:
procedure TComplexVariantType.StreamIn(var Dest: TVarData; const Stream: TStream);
begin
with TReader.Create(Stream, 1024) do
try
with TComplexVarData(Dest) do
begin
VComplex := TComplexData.Create;
VComplex.Real := ReadFloat;
VComplex.Imaginary := ReadFloat;
end;
finally
Free;
end;
end;
procedure TComplexVariantType.StreamOut(const Source: TVarData; const Stream: TStream);
begin
with TWriter.Create(Stream, 1024) do
try
with TComplexVarData(Source).VComplex do
begin
WriteFloat(Real);
WriteFloat(Imaginary);
end;
finally
Free;
end;
end;
Beachten Sie, wie diese Methoden ein Reader- bzw. Writer-Objekt für den Parameter Stream
erzeugen, um die Einzelheiten beim Lesen oder Schreiben von Werten zu handhaben.