मैं 64-बिट्स पर एक बड़ा डेल्फी कोड बेस अपनाने पर काम कर रहा हूं।डेल्फी 64-बिट: गलत कास्ट ढूंढना?
var
p1,p2 : pointer;
begin
inc(Integer(p1),10);
p2 := Pointer(Integer(p1) + 42);
मैं इन डाले मैं उनके साथ जगह ले ली है कहां मिल सकती है NativeInt-डाले बजाय उन्हें 64 में सही बनाने के लिए: कई मामलों में वहाँ लाइनों जहां संकेत इस के समान 32-बिट मूल्यों से/करने के लिए casted हैं कर रहे हैं बिट मोड
हालांकि मुझे यकीन नहीं है कि मैंने उन्हें सब कुछ पाया है। कभी-कभी कस्ट अधिक सूक्ष्म होते हैं, इसलिए स्ट्रिंग "पूर्णांक (" के लिए टेक्स्ट-सर्चिंग पर्याप्त नहीं है।
चूंकि "पूर्णांक (" 64-बिट में कास्ट विफल हो जाएगा यदि सूचक मान पूर्णांक की सीमा से ऊपर है टाइप करें मेरे पास एक विचार है: क्या होगा यदि मैं मेमोरी मैनेजर को 4 जीबी से ऊपर मेमोरी आवंटित करने के लिए मजबूर कर सकता हूं (तो पॉइंटर वैल्यू 32-बिट्स से अधिक का उपयोग कर रहे हैं)? तो मुझे रनटाइम त्रुटियां मिलेंगी और गलत तरीके से उन गांवों को आसानी से ढूंढ सकती हैं। क्या यह संभव है? या कोई भी किसी अन्य तकनीक की सिफारिश कर सकता है?
धन्यवाद, MEM_TOP_DOWN ध्वज बहुत दिलचस्प है। जिस परियोजना में मैं काम कर रहा हूं वह एक कस्टम डीबग आवंटक है, इसलिए अभी मैंने ध्वज का उपयोग करने के लिए संशोधन किया है। यह बहुत धीमा है लेकिन मुझे पहले से ही रूपांतरण कीड़े मिल रही हैं। –