-
К сожалению не удается скомпилировать примеры в Delphi, которые прилагались к книге на диске. Готовые ЕХЕшники с диска работают нормально.
Привожу пошагово мои действия.
1.Копирую с диска файлы из каталога \AT89-HID-int1\HIDtest в рабочий каталог. Запускаю Delphi. Открываю проект Projeсt1. Нажимаю RUN. Выдается сообщение: [Fatal Error] Unit1.pas(27): File not found: 'SetupApi.dcu'.
2.Копирую с диска файл SetupApi.pas из каталога \Enumerator.Delphi в рабочий каталог. Нажимаю RUN. Выдается сообщение: [Fatal Error] SetupApi.pas(6024): File not found: 'ModuleLoader.dcu'.
3.Копирую с диска файл ModuleLoader.pas из каталога \Enumerator.Delphi в рабочий каталог. Нажимаю RUN. Выдается сообщение: [Fatal Error] Unit1.pas(27): File not found: 'Hid.dcu'.
4.В рабочем каталоге переименовываю #hid.pas в hid.pas. Нажимаю RUN. Все компилируется, запускается приложение.
5.Как только нажимаю на кнопку приложения "Читать", выполнение приложения прекращается, выдается сообщение:
Project Project1.exe raised exeption class EAccessViolation at address 00000000.Read of address 00000000'. Process stopped. Use Step or Run to continue.
В отладчике вижу, что проблема возникает при вызове процедуры HidD_GetHidGuid(HidGuid);.
Напоминаю, что если запускать готовый ЕХЕшник с диска, то он нормально работает. Нормально читает дескриптор с моего USB девайса. Как решить проблему? Смысл решетки перед hid.pas?
Пробовал на Delphi6 и на Delphi7, под операциокой Windows2000 и Windows XP. Версия hid.dll под XP 5.1.2600.0. Версия hid.dll под W2000 5.0.2195.6655.
Заранее спасибо.
-
> 4.В рабочем каталоге переименовываю #hid.pas в hid.pas.Нажимаю
может в Hid.dcu ?
-
Может? Или так надо делать? Дело в том, что я плохо знаю Delphi и не понимаю решетка имеет определенный смысл или нет. После того, как я убрал решетку компилятор сам сделал hid.dcu.
-
Как-то раз ее назвали "Книжка с ошибками"
-
> mml (17.11.2008 9:22:02) [2]
Не имеет определенного смысла, но использование решетки всегда путь к труднообнаруживаемым проблемам.
-
Как то раз в одном журнале я прочёл статью "Пишем упаковщик". Если точно воспроизвести приведённый текст программы, то действительно получается упаковщик. Проблема в том, что распакованный потом файл не был идентичен оригинальному. Отсюда мораль: если в книге/журнале приведён лишь текст, а не описание принципов работы - будь готов, что это не работает.
-
Проблему удалось решить дописав код: procedure TForm1.FormCreate(Sender: TObject); begin LoadHid; LoadSetupApi; end;
procedure TForm1.FormDestroy(Sender: TObject); begin UnloadHid; UnloadSetupApi; end;
|