Т.е. у тебя юникодные версии.
Соответсвенно, при использовании просто String, длинна передаваемых данных будет Length(String)*SizeOf(Char), где SizeOf(Char) возвращает 2. В принципе, если библиотека тоже юникодная, то она должна правильно понять переданную строку, но вот размер данных ты, походу, вычисляешь не првильно. Кроме того, в сигнатуре функции требуется передача массива байт. Строка, в принципе, может выступать как массив байт. Только для приема данных память надо выделять до вызова, а не надеяться, что функция ее выделит сама (в последнем случае параметр выглядел бы так: uint8** writeBuffer).
Теперь про WORD. uint16 - это 2-х байтовое беззнаковое целое, которое и есть WORD. В последнем случае массив, видимо, не предполагается. Соотв. это возвращаемое значение, которое можно сделать указателем, а можно - var, что заставит компилятор сделать именно указатель, но так пользоваться удобнее.
|