Chargement et enregistrement des valeurs des variants personnalisés

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Copie et effacement des variants personnalisés


Par défaut, quand on affecte au variant personnalisé la valeur d'une propriété publiée, il est transtypé en chaîne quand la propriété est enregistrée dans un fichier fiche, et reconverti à partir de la chaîne quand la propriété est lue dans ce fichier fiche. Vous pouvez cependant fournir votre propre mécanisme de chargement et d'enregistrement des valeurs des variants personnalisés pour utiliser une représentation plus naturelle. Pour ce faire, le descendant de TCustomVariantType doit implémenter l'interface System.Classes.IVarStreamable à partir de Classes.pas.

IVarStreamable définit deux méthodes, StreamIn et StreamOut, pour lire et écrire la valeur d'un variant dans un flux. Par exemple, TComplexVariantType, de l'unité VarCmplx implémente la méthode IVarStreamable comme ceci :

Object Pascal :

 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;

Remarquez comment ces méthodes créent un objet lecteur ou écrivain pour que le paramètre Stream gère les détails de lecture et d'écriture des valeurs.

Voir aussi