Я взял вышеуказанную идею и реализовал ее в программе чтения токенов, используемой для импорта данных.
Каждый токен представляет собой строку, которая затем преобразуется в соответствующий тип.
Код, необходимый для преобразования в целое число и строку, находится внизу поста.
Для чтения и преобразования токена необходим только следующий код:
Myvalue := DataImporter.ImportToken;
В зависимости от типа Myvalue запускается правильное неявное преобразование.
Код:
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;
Осуществление
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;