Читать «Виртуальная библиотека Delphi» онлайн - страница 20

Unknown

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) ей некоторое значение? 

К примеру, функция "прослушивает" каталог на предмет файлов. Если находит, то создает нить, которая будет обрабатывать файл. Потомку надо передать имя файла, а вот как?

Странный вопрос. Я бы понял, если бы требовалось передавать данные во время работы нити. А так обычно поступают следующим образом.

В объект нити, происходящий от 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.

СGI программа должна показывать GIF изображение.

Имею тег.  Прочитать JPeg, указать ContentType=Image/jpeg и выдать изображение в SaveToStream умею. Как сделать тоже самое для файлов GIF, в особенности анимационных? Если можно просто перелить дисковый файл (пусть он хоть трижды GIF) в Response CGI-програмы, то как это сделать?

Выдайте из скрипта следующее:

Content-type: image/gif