Chargement et enregistrement des valeurs des variants personnalisés
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 :
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;
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.