На один байт больше записи

Я все еще очень плохо знаком с разработкой C++, пожалуйста, имейте это в виду во время моих вопросов. У меня есть устаревшее приложение Delphi, которое отправляет сообщение в мое окно C++, используя SendMessage() с WM_COPYDATA, Приложение использует запись для передачи большого количества данных:

TUser = record
    LastName:   String[28];
    FirstName:    String[28];
    ID:          String[20];
    DateOfBirth: String[10];
    Sex:         Boolean;
    Size:        Word;
    Weight:      Word;
  end;

В моем приложении C++ я настроил следующую структуру для считывания передаваемой информации:

typedef struct {
    char LastName[29];
    char FirstName[29];
    char ID[21];
    char DateOfBirth[11];
    bool Sex;
    unsigned short Size;
    unsigned short Weight;
} Legacy_TUser;

Согласно документации Delphi, фиксированная строка, например, длиной 40, будет занимать 40 + 1 байт. Однако, как только я получаю данные, я выполняю сравнение размера полученных данных и мою структуру struct:

Logger::Log("Size of data: %i", pcds->cbData);
Logger::Log("Size of struct: %i", sizeof(Legacy_TUser));

Это приводит к выводу:

Size of data: 95
Size of struct: 96

Что подводит меня к моему последнему вопросу. Я не могу найти причину, почему размер моей структуры на один байт слишком велик. Длина строки кажется правильной, данные, которые я читаю, сдвинуты ровно на один байт. Что мне здесь не хватает?

0 ответов

Другие вопросы по тегам