Использование HIDController в Delphi 2010
У меня есть приложение, которое использует HID Controller в Delphi 7, но теперь мне нужно использовать его в Delphi 2010(проблемы с лицензией), но я обнаружил некоторые проблемы совместимости этого HIDController в этом Delphi 2010. Эта библиотека является частью проекта JEDI.
Я заметил некоторые вопросы от людей, использующих эту библиотеку (компонент JvHidDeviceController) с Delphi 2010 и Win7. Может быть, кто-то, кто столкнулся с той же проблемой, мог бы помочь мне. Я теперь это возможно, я просто не могу понять, как.
3 ответа
Это рабочий код для D2010: используйте пакет с этого сайта: HIDController DPK
И замените JvHidControllerClass.pas на версию с этого сайта: измененный исходный файл
Основная проблема заключается в объявлении строки и AnsiString, поэтому этот файл разрешает эту несовместимость.
PS Используйте архивную версию файла из поста.
По-видимому, проблема "устройство не может быть открыто" (Наталья) также связана с символами Юникода. Новая версия HIDController, указанная в ответе 1, не решает эту проблему.
Решение: Измените тип последнего параметра TJvHIDPnPInfo.Create (unit JvHIDController.pas) в "PAnsiChar" вместо "PChar". Не забудьте также изменить тип, в котором процедура "вызывается".
ps ссылки на "Измененный исходный файл" и "zip-версию" в ответе 1 не работают.
В Delphi 2010 все переменные, объявленные как строка, имеют тип Unicode (широкая строка). При переносе компонентов из более ранних версий (Delphi 7) в более новую версию всегда проверяйте все переменные, объявленные как string и pchar. В более новой версии эти переменные должны быть объявлены как AnsiString и PAnsyChar, что, скорее всего, решит ваши проблемы. Конечно, вы должны убедиться, что вы вызываете какие-либо функции dll для правильного вызова _W (при вызове функции с широкими строковыми параметрами) или _A при использовании AnsiString. Однако еще одна вещь, которую стоит упомянуть, это проверить документацию на HID, чтобы увидеть, какие типы параметров принимаются и правильно использовать их в более новой версии Delphi. Я написал свой контроллер hid (аналогичный) с нуля, хотя к тому времени его еще не было, и, конечно, когда я портировал его на Delphi2010, моей главной проблемой были разные типы строк. Это было похоже, когда я написал WinUsbController для использования драйвера WinUSB. Обязательно читать руководства (MSDN), проверять заголовки (.h) и читать справку delphi (для строки), чтобы соответствовать правильным типам данных.