www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 
  Как при помощи Api отправить письмо
  Как узнать раскдадку клавиатуры в другом окне
  Советы по созданию инсталляторов.
  Handle consol
  Как получить список хэндлов всех процессов
  Создание Скринсейверов.
  Windows API.
  Создание окна посредством Windows API.
  GDI и графический интерфейс.
  Работа с реестром.
  Регистрация приложения в SimpleService в Win9x
  TSharedSream — класс упрощающий работу с файлом подкачки
  DLL
  Tthread
  Иконка в systray
 
 
 
 
 
 
 


Надо подключить 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 легко можно пользоваться данными, переданными ей при его создании.
Например:

......
TYourThread = class(TTHread)
private
 FFileName: String;
protected
 procedure Execute; overrided;
public
 constructor Create(CreateSuspennded: Boolean;
 const AFileName: String);
end;
.....
constructor TYourThread.Create(CreateSuspennded: Boolean;
  const AFileName: String);
begin
 inherited Create(CreateSuspennded);
 FFIleName := AFileName;
end;
procedure TYourThread.Execute;
begin
 try
  ....
  if FFileName = ...
  ....
 except
  ....
 end;
end;
....
TYourForm = class(TForm)
....
private
 YourThread: TYourThread;
 procedure LaunchYourThread(const AFileName: String);
 procedure YourTreadTerminate(Sender: TObject);
....
end;
....
procedure TYourForm.LaunchYourThread(
  const AFileName: String);
begin
 YourThread := TYourThread.Create(True, AFileName);
 YourThread.Onterminate := YourTreadTerminate;
 YourThread.Resume
end;
....
procedure TYourForm.YourTreadTerminate(Sender: TObject);
begin
 ....
end;
....
end.


 
 
 
 
 
57
Используются технологии uCoz
Используются технологии uCoz

Rambler's Top100 Rambler's Top100
Используются технологии uCoz

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz