结构比记录大一个字节

时间:2017-02-01 09:11:08

标签: c++ delphi struct record sendmessage

我对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的大小是一个字节太大。字符串长度似乎是正确的,我读入的数据正好移位了一个字节。我在这里缺少什么?

0 个答案:

没有答案