В Delphi 2010 все переменные, объявленные как строка, имеют тип Unicode (широкая строка). При переносе компонентов из более ранних версий (Delphi 7) в более новую версию всегда проверяйте все переменные, объявленные как string и pchar. В более новой версии эти переменные должны быть объявлены как AnsiString и PAnsyChar, что, скорее всего, решит ваши проблемы. Конечно, вы должны убедиться, что вы вызываете какие-либо функции dll для правильного вызова _W (при вызове функции с широкими строковыми параметрами) или _A при использовании AnsiString. Однако еще одна вещь, которую стоит упомянуть, это проверить документацию на HID, чтобы увидеть, какие типы параметров принимаются и правильно их использовать в более новой версии Delphi. Я написал свой контроллер hid (аналогичный) с нуля, хотя к тому времени его еще не было, и, конечно, когда я портировал его на Delphi2010, моей главной проблемой были разные типы строк. Это было похоже, когда я написал WinUsbController для использования драйвера WinUSB. Обязательно читать руководства (MSDN), проверять заголовки (.h) и читать справку delphi (для строки), чтобы соответствовать правильным типам данных.