我对C ++开发还很陌生,请在我的问题范围内牢记这一点。我有一个遗留的Delphi应用程序,它使用带有SendMessage()
的{{1}}向我的C ++窗口发送消息。应用程序正在使用记录来传输数据:
WM_COPYDATA
在我的C ++应用程序中,我设置了以下结构来读出传输的信息:
TUser = record
LastName: String[28];
FirstName: String[28];
ID: String[20];
DateOfBirth: String[10];
Sex: Boolean;
Size: Word;
Weight: Word;
end;
根据Delphi文档,一个固定的字符串,例如40的长度将占用40 + 1个字节。但是,一旦我收到数据,我会对接收的数据和结构设置进行大小比较:
typedef struct {
char LastName[29];
char FirstName[29];
char ID[21];
char DateOfBirth[11];
bool Sex;
unsigned short Size;
unsigned short Weight;
} Legacy_TUser;
这导致输出:
Logger::Log("Size of data: %i", pcds->cbData);
Logger::Log("Size of struct: %i", sizeof(Legacy_TUser));
这让我想到了最后一个问题。我似乎找不到任何理由为什么我的struct的大小是一个字节太大。字符串长度似乎是正确的,我读入的数据正好移位了一个字节。我在这里缺少什么?