Je pris l'idée ci-dessus et mis en œuvre dans un Tokenreader utilisé pour importer des données. Chaque jeton est une chaîne, qui est ensuite convertie au type approprié. Le code requis pour la conversion en nombre entier et chaîne est en bas de la publication.
Pour lire et convertir un jeton que le code suivant est nécessaire:
Myvalue := DataImporter.ImportToken;
En fonction du type de maValeur, est déclenché la bonne conversion implicite.
Le code:
TTokenValue = record
public
FValue:string;
constructor Create(const AValue:string);
class operator Implicit(const AFoo:TTokenValue): integer;
class operator Implicit(const AFoo:TTokenValue): string;
end;
mise en œuvre
function TDataImporter.ImportToken: TTokenValue;
begin
result := TTokenValue.Create(GetCurrentToken());
end;
constructor TTokenValue.Create(const AValue: string);
begin
FValue := AValue;
end;
class operator TTokenValue.Implicit(const AFoo: TTokenValue): integer;
begin
result := strtointdef(AFoo.FValue, 0);
end;
class operator TTokenValue.Implicit(const AFoo: TTokenValue): string;
begin
result:=AFoo.FValue;
end;
Eh bien, pas tout à fait la réponse que j'espérais, mais intéressante quand même. À votre santé. – HMcG