जब मैं लक्ष्य मंच 64-बिट Windows के लिए डेल्फी XE2 में निम्न कोड को संकलित ...डेल्फी XE2 64 बिट में HKEY_-Constants के लिए मुझे "निरंतर अभिव्यक्ति subrange सीमाओं का उल्लंघन क्यों करती है"?
function HKeyToString(_HKey: HKey): string;
begin
case _HKey of
HKEY_CLASSES_ROOT: result := 'HKEY_CLASSES_ROOT'; // do not translate
HKEY_CURRENT_USER: result := 'HKEY_CURRENT_USER'; // do not translate
HKEY_LOCAL_MACHINE: result := 'HKEY_LOCAL_MACHINE'; // do not translate
HKEY_USERS: result := 'HKEY_USERS'; // do not translate
HKEY_PERFORMANCE_DATA: result := 'HKEY_PERFORMANCE_DATA'; // do not translate
HKEY_CURRENT_CONFIG: result := 'HKEY_CURRENT_CONFIG'; // do not translate
HKEY_DYN_DATA: result := 'HKEY_DYN_DATA'; // do not translate
else
Result := Format(_('unknown Registry Root Key %x'), [_HKey]);
end;
end;
... मैं HKEY_-स्थिरांक की प्रत्येक के लिए चेतावनी मिलती है: "W1012 लगातार अभिव्यक्ति subrange का उल्लंघन करती है
type
HKEY = type UINT_PTR;
{...}
const
HKEY_CLASSES_ROOT = HKEY(Integer($80000000));
ये मेरे लिए ठीक लग: सीमा "
मैं (पहचानकर्ता पर Ctrl + Leftclick के साथ) Winapi.Windows में घोषणाओं की जाँच की। संकलक अभी भी क्यों सोचता है कि कोई समस्या है?
लगता है कि व्यवहार्य लगता है, तो अगर समाधान के बजाय समाधान का उपयोग करना होगा? – dummzeuch
दस्तावेज़ ['# Case_Statements'] से निकालें [http://docwiki.embarcadero.com/RADStudio/XE3/en/Declarations_and_Statements#Case_Statements):" .. जहां selectorExpression 32 बिट्स (स्ट्रिंग) से छोटे क्रमिक प्रकार की कोई अभिव्यक्ति है 32 बिट्स से बड़े प्रकार के नियम और टर्मिनल अमान्य हैं)। " –
@LURD मैं सटीक के लिए XE3 दस्तावेज़ नहीं लेगा, जब यह 64 बिट (और यहां तक कि CrossPlatform) से संबंधित है। यह नए लक्ष्यों के लिए बहुत निराश है, और इसे रीफ्रेश नहीं किया गया है (आपके पास अभी भी "लिनक्स" संदर्भ हैं, और Win32 विशिष्ट विवरण - देखें [उदाहरण के लिए यह पृष्ठ] (http://docwiki.embarcadero.com/RADStudio/XE3/en/ Program_Control))। लेकिन इस मामले में, वास्तविक सीमा की तरह लगता है - भले ही यह अनिवार्य नहीं है, जेनरेट एएसएम बिंदु से, 64 बिट में, आप 'केस' की जांच के लिए बैकएंड पर x64 रजिस्टरों का उपयोग कर सकते हैं। तो मुझे लगता है कि 64 बिट संदर्भ के लिए संकलक फ्रंटेंड अपडेट नहीं किया गया था। –