передача значений параметров потоку
От: Vi_h  
Дата: 22.10.05 14:20
Оценка:
Помогите пожалуйста разрешить следующую проблему:
есть функция в .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;?
Помогите пожалуйста!!!
Re: передача значений параметров потоку
От: raskin Россия  
Дата: 22.10.05 14:27
Оценка:
Vi_h wrote:
> Так вот каким образом из MyFunction(<путь+имя .ini файла>) передать
> значение этого параметра в procedure TMyTread.Execute; а оттуда уже в
> function ReadIni(ASection, sPash:string):string;?
> Помогите пожалуйста!!!
Принципиально ли иметь именно наследника TThread? У BeginThread есть
параметр — тело потока и параметр, что ему передать как параметр
(указатель, обычно — на необходимые данные) (и много параметров, которые
можно заполнять nil и 0 пополам, в большинстве своём). А в справке
сказано, что некоторые вещи можно делать только через BeginThread, но
размыто. Может, найдёте что-то аналогичное в TThread.
Posted via RSDN NNTP Server 2.0 beta
Re: передача значений параметров потоку
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 25.10.05 16:59
Оценка:
Нужно именно перед Execute передавать? Если не принципиально, почему тогда не переопределить конструктор для своего потока?
TMyTread = class(TThread)
public
  constructor Create(const IniFileName: string); reintroduce;
protected
  FFileName: string;
  procedure Execute; override;
end;

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[2]: передача значений параметров потоку
От: Vi_h  
Дата: 26.10.05 14:53
Оценка:
Спасибо! Именно это мне и было нужно!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.