在 Delphi XE2 Win32 平台上运行以下代码是有效的。然而,如果在 win64 平台上编译相同的代码并以调试模式运行,则会导致 "EnumRCDataProc" 访问冲突。
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平台上使用Delphi XE2 IDE调试代码时,我发现EnumRCDataProc中hModule的值与H变量不匹配。我怀疑可能是我为EnumRCDataProc构建的参数有问题。但是,我想不出具体的解决办法。你有什么想法吗?
TEnumRCDataProc(Pointer(@EnumRCDataProc))
这样传递它。我无法理解 '2094' 作为编译错误的意义所在。 - Sertac Akyuz