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.
irade çıkışı Yukarıdaki kod:Neden bir varyantı tek bir atama varDouble varyantı ile sonuçlanır?
VarType: Single:
varSingle = $0004; { vt_r4 4 } varDouble = $0005; { vt_r8 5 }
Böylece System.pas itibaren 5
Çift 5, ben VTSingle beklediğiniz - değil 5
Neyi eksik?
'_VarFromReal 'yordamını asm' den Pascal 'a çevirdiniz mi? En azından Delphi 2009'da, bir 'asm' prosedürü olarak uygulanır. –
@AndreasRejbrand Modern Delphis ayrıca yeni x86 olmayan hedeflerin yararına Pascal sürümlerine sahiptir. Bu yüzden burada Pascal versiyonunu kullandım. –