Соответствие между простыми типами данных
Нижеследующая таблица описывает соответствие между некоторыми, простыми типами данных двух языков:
BOOL | b | 8-и битное булево значение. Значение 0 эквивалентно False, ненулевое значение - True | Boolean или Long |
BYTE | ch | 8-и битное целое без знака | Byte |
HANDLE | h | 32 -х битное целое без знака, задающее описатель Windows -объектов | Long |
int | n | 2-х байтное целое со знаком | Integer |
UINT | u | 2-х байтное целое без знака | Long |
DWORD | dw | 4-х байтное целое без знака | Long |
long | l | 4-х байтное целое со знаком | Long |
LP | lp | 32-х битный указатель на C/C++ структуры, строки, функции или другие данные в памяти | Long |
LPZSTR | lpsz | 32-х битный указатель на C строку, завершаемую нулем | Long |
При преобразовании данных между типами UINT и DWORD и типом Long могут возникнуть проблемы, если заданы некорректные значения этих данных. Понятно, что если параметр функции API объявлен как UINT, то возникнет ошибка при попытке передать через тип Long отрицательное значение или длинное целое, превосходящее значение, допустимое для типа UINT. Конечно, нужно быть или осторожным или ввести собственные типы данных, где все необходимые проверки будут выполняться.