Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

передача значений параметров потоку [D5, NT4]


Tori ©   (2005-10-23 17:48:00) 

Помогите пожалуйста разрешить следующую проблему:
есть функция в .dll файле:
function MyFunction(const sPash:string):string; export;
begin
 Application.Initialize;
 Application.CreateForm(TDataModule2, DataModule2);
 Application.CreateForm(TForm2, Form2);
 Application.Run;
 Form2.Visible:=True; // для события TForm2.OnShow прописан тот же обработчик что и для TForm2.Button1Click
 Result:=sPash;
end;
По идее после Form2.Visible:=True; срабатывает
procedure TForm2.Button1Click(Sender: TObject);
begin
potok1 := TMyTread.Create(True);
potok1.FreeOnTerminate := True;
potok1.OnTerminate := Form2.OnDestroy;
potok1.Priority := tpIdle ;
potok1.Resume;
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
Application.Terminate;
end;

Необходимо в функцию MyFunction в качестве параметра передавать путь+имя к .ini файлу.
Это значение используется в процедуре
procedure TMyTread.Execute; и в функции которая вызывается во время выполнения procedure TMyTread.Execute;
Т.е.
type
 TMyTread = class(TThread)
 protected
   procedure Execute; override;
 end;

procedure TMyTread.Execute;
var
i: Integer;
go_exit : Boolean;
zz1, zz3 : _STARTUPINFOA;
zz2, zz4 : _PROCESS_INFORMATION;

begin
Application.Minimize;
ReadIni('S_ASCHET', '<путь+имя .ini файла>'); // это функция в которую необходимо передать параметр из MyFunction;
.........................................................................
CreateProcess(PChar(sc.BeforeRev('\', '<путь+имя .ini файла>') + '\FOX\CRE_IND1.EXE'),
          nil, nil, nil,
          False,
          CREATE_DEFAULT_ERROR_MODE, nil,
          PChar(sc.BeforeRev('\', '<путь+имя .ini файла>')), zz3, zz4);
..........................................................
end;

Так вот каким образом из MyFunction(<путь+имя .ini файла>) передать значение этого параметра в procedure TMyTread.Execute; а оттуда уже в function ReadIni(ASection, sPash:string):string;?
Помогите пожалуйста!!!


Tori   (2005-10-26 18:50:00) [1]

Спасибо Bes! Спасибо Eraser! Книжку почитала. Сделала так как посоветовали - все получилось!


Digitman   (2005-10-24 08:47:00) [2]


> Tori ©   (23.10.05 17:48)  


кроме многих прочих несуразностей в твоем алгоритме непонятно самое главное - зачем вообще здесь нужен thread, при том что обработка ini-файла и так уже выполняется параллельно с вызывающим приложением, в отдельном создаваемом тобой процессе ?


Leonid Troyanovsky   (2005-10-24 08:47:00) [3]


> Tori ©   (23.10.05 17:48)  
> Помогите пожалуйста разрешить следующую проблему:
> есть функция в .dll файле:


Оную функцию (вместе с длл) - в печь.

--
Regards, LVT.


Eraser   (2005-10-23 22:29:00) [4]


> Tori ©   (23.10.05 17:48)

Переопредели конструктор потока, которому и передавай имя файла.


Bes   (2005-10-23 20:44:00) [5]

уууу.... а ты перед тем как браться за потоки, книжу по ООП почитай....
Раздел - свойства объектов.

а то блин накопи-пайстил сорц и терь не знаешь что с ним делать...

а надо добавить в раздел pulibc  класса TFrom2 и TMyThread
св-во path:string и через него передавай...а как почитай. инет - друг твой.


Наверх

Титульная страница Поиск, карта сайта Написать письмо