8
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變體會導致varDouble變體?
VARTYPE:單:5,雙5
從System.pas
varSingle = $0004; { vt_r4 4 }
varDouble = $0005; { vt_r8 5 }
因此,我期望VTSingle到是 - 不是5
我錯過了什麼?
你是否將'_VarFromReal'程序從asm翻譯成了Pascal?至少在Delphi 2009中,它是作爲一個'asm'程序來實現的。 – 2013-02-28 11:11:15
@AndreasRejbrand現代Delphis還擁有Pascal版本,以利於新的非x86目標。所以我在這裏使用了Pascal版本。 – 2013-02-28 11:13:36