में एक्सेस उल्लंघन का कारण बनता है डेल्फी XE2 Win32 प्लेटफ़ॉर्म कार्यों में निम्न कोड चला रहा है। हालांकि, एक ही कोड win64 मंच में संकलन "EnumRCDataProc" में पहुँच उल्लंघन का कारण होगा यदि डिबग मोड में चलाएँ:डेल्फी XE2: WinAPI EnumResourceNames को आमंत्रित करें Win64 प्लेटफ़ॉर्म
procedure TForm2.Button1Click(Sender: TObject);
function EnumRCDataProc(hModule: THandle; lpszType, lpszName: PChar; lParam:
NativeInt): Boolean; stdcall;
begin
TStrings(lParam).Add(lpszName);
Result := True;
end;
var k: NativeInt;
L: TStringList;
H: THandle;
begin
H := LoadPackage('resource.bpl');
L := TStringList.Create;
try
EnumResourceNames(H, RT_RCDATA, @EnumRCDataProc, NativeInt(L));
ShowMessage(L.Text);
finally
L.Free;
UnloadPackage(H);
end;
end;
जब Win64 मंच पर डेल्फी XE2 आईडीई में कोड डीबग, मैं EnumRCDataProc में hModule का मूल्य मिला परिवर्तनीय एच के साथ मेल नहीं खाता। मुझे संदेह है कि EnumRCDataProc के लिए बनाए गए पैरामीटर के बारे में कुछ गलत हो सकता है। हालांकि, मैं यह नहीं समझ सकता कि कैसे। कोई विचार?
कंपाइलर को इसके बारे में शिकायत नहीं करनी चाहिए। स्थानीय enum फ़ंक्शन बिल्कुल कोई मुद्दा नहीं है। – OnTheFly
अनुमान लगाएं, यह क्यों निकलता है: पी – OnTheFly
जब तक कॉलबैक किसी भी रूप की चीज़ तक नहीं पहुंचता है जो किसी समस्या नहीं होनी चाहिए। फिर फिर, उस उद्देश्य के लिए, केवल कॉलबैक लेना सही बात है। ओवर-स्ट्राइक का मतलब क्या है? क्या यह ऊपर दिए गए उत्तर का हिस्सा रद्द करता है? –