Цитата:
Сообщение от 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 удаётся забить буквы и арифметические символы.