uses
SysUtils, Variants;
var
VariantSingle: Variant;
VTSingle: TVarType;
SingleTest: Single;
VariantDouble: Variant;
DoubleTest: Double;
VTDouble: TVarType;
begin
SingleTest := 1.234;
VariantSingle := SingleTest;
VTSingle := VarType(VariantSingle) and varTypeMask;
DoubleTest := 1.23456;
VariantDouble := DoubleTest;
VTDouble := VarType(VariantDouble) and varTypeMask;
WriteLn(Format('VarType: Single: %d, Double %d', [VTSingle, VTDouble]));
end.
Код выше вывод будет:Почему присвоение одного варианта варианту приводит к варианту varDouble?
VarType: Single: 5, Double 5
От System.pas
varSingle = $0004; { vt_r4 4 }
varDouble = $0005; { vt_r8 5 }
Таким образом, я бы ожидать VTSingle к be - not 5
Что мне не хватает?
Вы переводили процедуру '_VarFromReal' из asm в Pascal? По крайней мере, в Delphi 2009 он реализован как процедура 'asm'. –
@AndreasRejbrand Современные Delphis также имеют версии Pascal для новых целей без x86. Поэтому я использовал версию Pascal. –