![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Имеется код
Код:
procedure wrk(param1, param2, param3:string; param4, param5: integer; out rslt:string);
begin
rslt:=param1+param2+param3+inttostr(param4+param5);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
mvs:string
begin
wrk('1', '2', '3', 4, 5, mvs);
showmessage(mvs)
end;Появилась такая проблема, процедуру wrk необходимо выполнить в отдельном потоке, каким образом передать ей параметры? Пробовалось и CreateThread и TThread, но как передать процедуре параметры так и не понял. В сети полно примеров, но во всех примерах вызов процедуры проходит без параметров... |
|
#2
|
||||
|
||||
|
|
|
#3
|
||||
|
||||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TMyThread = class(TThread)
private
param1: String;
param2: String;
param3: String;
param4: Integer;
param5: Integer;
rslt: String;
protected
procedure Execute; override;
public
constructor Create(aparam1: String; aparam2: String; aparam3: String; aparam4: Integer; aparam5: Integer);
// destructor Destroy; override;
end;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
MyThread: TMyThread;
procedure OnThread(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TMyThread }
constructor TMyThread.Create(aparam1: String; aparam2: String; aparam3: String; aparam4: Integer; aparam5: Integer);
begin
inherited Create(False);
FreeOnTerminate:=False;
param1:=aparam1;
param2:=aparam2;
param3:=aparam3;
param4:=aparam4;
param5:=aparam5;
end;
//destructor TMyThread.Destroy;
//begin
// windows.Beep(1000, 100);
// inherited Destroy;
//end;
procedure TMyThread.Execute;
begin
Sleep(5000);
rslt:=param1+param2+param3+IntToStr(param4+param5);
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
MyThread:=TMyThread.Create('a', 'b', 'c', 1, 2);
MyThread.OnTerminate:=OnThread;
end;
procedure TForm1.OnThread(Sender: TObject);
begin
Caption:=MyThread.rslt;
MyThread.Free;
end;
end. |