Это догадка!
Единственное, о чем я могу подумать:
TJvHidDeviceController вызывает вызов Windows API БЕЗ, используя суффикс A или W.Используемая структура: SP_DEVICE_INTERFACE_DETAIL_DATA_A, версия ANSI.Теперь, если вы используете Delphi 2009 или выше, подпрограмма будет ожидать SP_DEVICE_INTERFACE_DETAIL_DATA_W.Размер такой же, так что все выглядит хорошо.Но сохраненные строки будут кодироваться в формате USC2 (WideChars), а не в кодировке ANSI ->, поэтому после каждого символа ANSI будет нулевой байт.TJvHidDeviceController, вероятно, преобразует массив символов обратно в строку паскаля, используя функцию, подобную StrPas, и, следовательно, вы видите только первый символ.
Проверка: установите точку останова сразу после вызова функции, которая заполняет структуру, и используйте окно ЦП для просмотра содержимого в виде дампа памяти.Если вы видите символы ANSI через каждые другие байты и нулевые байты между ними, вы можете подтвердить, что приведенный выше сценарий имеет место.
Решение:
- Проверьте, использует ли вызов широкийвариант и измените структуру соответственно.
- Проверьте, использует ли вызов широкий вариант, и используйте вместо него вариант А.Это, наверное, самый простой вариант.