Конференция "Прочее" » Вопрос к тем, кто читал книгу Агурова "Практика программирования
 
  • mml © (17.11.08 08:43) [0]
    К сожалению не удается скомпилировать примеры в 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.

    Заранее спасибо.
  • AIK © (17.11.08 08:56) [1]

    > 4.В рабочем каталоге переименовываю #hid.pas в hid.pas.Нажимаю


    может в Hid.dcu ?
  • mml © (17.11.08 09:22) [2]
    Может? Или так надо делать?
    Дело в том, что я плохо знаю Delphi и не понимаю решетка имеет определенный смысл или нет.
    После того, как я убрал решетку компилятор сам сделал hid.dcu.
  • KilkernnyCat (17.11.08 11:12) [3]
    Как-то раз ее назвали "Книжка с ошибками"
  • Anatoly Podgoretsky © (17.11.08 12:22) [4]
    > mml  (17.11.2008 9:22:02)  [2]

    Не имеет определенного смысла, но использование решетки всегда путь к труднообнаруживаемым проблемам.
  • Dimka Maslov © (17.11.08 15:55) [5]
    Как то раз в одном журнале я прочёл статью "Пишем упаковщик". Если точно воспроизвести приведённый текст программы, то действительно получается упаковщик. Проблема в том, что распакованный потом файл не был идентичен оригинальному.
    Отсюда мораль: если в книге/журнале приведён лишь текст, а не описание принципов работы - будь готов, что это не работает.
  • mml © (19.11.08 08:05) [6]
    Проблему удалось решить дописав код:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    LoadHid;
    LoadSetupApi;
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    UnloadHid;
    UnloadSetupApi;
    end;
 
Конференция "Прочее" » Вопрос к тем, кто читал книгу Агурова "Практика программирования
Есть новые Нет новых   [134446   +31][b:0.001][p:0.001]