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: एकल: 5, डबल 5
System.pas से
varSingle = $0004; { vt_r4 4 }
varDouble = $0005; { vt_r8 5 }
इस प्रकार, मैं करने के लिए VTSingle उम्मीद थी - 5
मुझे क्या याद आ रही है?
क्या आपने '_VarFromReal' प्रक्रिया को एएसएम से पास्कल में अनुवादित किया था? कम से कम डेल्फी 200 9 में, इसे 'एएसएम' प्रक्रिया के रूप में लागू किया गया है। –
@AndreasRejbrand आधुनिक डेल्फ़िस में नए गैर x86 लक्ष्यों के लाभ के लिए पास्कल संस्करण भी हैं। तो मैंने यहां पास्कल संस्करण का उपयोग किया। –