Надо подключить DLL и использовать некоторые ее функции.
Прислал Сергей 31.10.2001 Есть первый вариант:
procedure procname1(param1:type1; param2:type2... и т.д.) external
'dllname.dll' name 'procname_in_dllfile';
Но тут есть один нюанс: при отсутствии DLL модуля,
либо при отсутствии в нем указанной процедуры будет выдаваться ошибка изапуск
программы будет отменен.
Второй вариант:
Type
prc1 = procedure (param1:type1; param2:type2... и т.д.) ;
var
proc1 : prc1;
head : integer ; // или что-то в этом роде
.....
var
p : pointer;
begin
head:= loadlibrary ('DLLFile.DLL'); // загружаем модуль в память
if head=0 then
begin
// Сообщаем о том что модуль не найден
end
else
begin
// Ищем в модуле наши процедуры и функции
p:=getprocaddress ('Имя_Искомой_Процедуры');
// Тут посмотри точно название этой
// функции в хелпе по LoadLibrary.
// Имя_Искомой_Процедуры должно
// быть один в один с именем процедуры
// в библиотеке с учетом регистров.
if p=nil then
begin
// Процедура не найдена
end else proc1:=prc1(p);
end;
Как передать при создании нити
(Tthread) ей некоторое значение?
Прислал Сергей 31.10.2001 К примеру, функция "прослушивает" каталог на предмет файлов. Если находит,
то создает нить, которая будет обрабатывать файл. Потомку надо передать
имя файла, а вот как?
Странный вопрос. Я бы понял, если бы требовалось передавать данные во
время работы нити. А так обычно поступают следующим образом.
В объект нити, происходящий от TThread дописывают поля. Как правило,
в секцию PRIVATE. Затем переопределяют конструктор CREATE, который, принимая
необходимые параметры заполняет соответствующие поля. А уже в методе EXECUTE
легко можно пользоваться данными, переданными ей при его создании.
Например: