Werte selbstdefinierter Variant-Typen laden und speichern

Aus RAD Studio
Wechseln zu: Navigation, Suche

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.

Siehe auch