На один байт больше записи
Я все еще очень плохо знаком с разработкой 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
Что подводит меня к моему последнему вопросу. Я не могу найти причину, почему размер моей структуры на один байт слишком велик. Длина строки кажется правильной, данные, которые я читаю, сдвинуты ровно на один байт. Что мне здесь не хватает?