Показать сообщение отдельно
  #10  
Старый 31.10.2015, 00:07
Аватар для Homo-Fantasmus
Homo-Fantasmus Homo-Fantasmus вне форума
Прохожий
 
Регистрация: 23.08.2011
Адрес: МО
Сообщения: 46
Версия Delphi: Delphi, Lazarus
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
Внимательно прочитай, что такое пара try/finally и чем отличается блок finally от блока except.
А вообще-то lmikle совершенно прав.

Да, косяк. Вот к чему приводит бездумное копирование чужого кода.
Досадно когда тратишь кучу времени на поиск подходящего материала, а тебе подсовывают заведомо не рабочий код.

Заменил на except.

Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
DLLRoutine: procedure; //объявление процедурной переменной
DllHandle: THandle;

begin
   try
   //Загружаем 'Tube_Smoke.dll'
    DLLHandle := LoadLibrary('Tube_Smoke.dll');
  except
    FreeLibrary(DLLHandle);
    ShowMessage('Не удалось загрузить DLL ...');
    end;

    try
    { DLLRoutine указывает на процедуру 'Check_Edit' в файле 'Tube_Smoke.dll' }
    DLLRoutine := GetProcAddress(DLLHandle,'Check_Edit');

    { Вызываем процедуру 'Check_Edit' }
    if Assigned(DLLRoutine) then
      DLLRoutine;

    if   GetProcAddress(DLLHandle,'Check_Edit') = nil then
      ShowMessage('Не удалось получить доступ к процедуре...');
     except
    FreeLibrary(DLLHandle);

  end;
  end;

Компилирует без ошибок, но и процедура не работает - в Edit удаётся забить буквы и арифметические символы.