Delphi:32 位与 64 位的字符串[255]



我使用以下方法在 2 个可执行文件之间共享一个短字符串:

Type
PInstanceInfo = ^TInstanceInfo;
TInstanceInfo = packed record
MainAppHandle: THandle;
SessionPath: String[255];
end;
Var MappingHandle: THandle;
InstanceInfo: PInstanceInfo;
MappingHandle := CreateFileMapping(INVALID_HANDLE_VALUE,
nil,
PAGE_READWRITE,
0,
SizeOf(TInstanceInfo),
PChar('MyApp'));
InstanceInfo := MapViewOfFile(MappingHandle, FILE_MAP_ALL_ACCESS, 0, 0, SizeOf(TInstanceInfo));
InstanceInfo^.MainAppHandle := Application.Handle;

我使用会话路径来存储文件的路径。当两个应用程序都是 x86 或 x64 时,这工作正常,但是当 App1 为 32 位且 App2 为 64 位时,当我读取字符串时,App2 缺少字符串的前 4 个字符。在这种情况下,短字符串结构有什么不同?

THandle是指针大小的。因此,它是32位或64位,具体取决于平台。这解释了缺少的 4 个字节。实际上,通过在测试程序中使用SizeOf函数,可以很容易地看到这一点。

最新更新