注册 登录
编程论坛 Delphi论坛

大家好,请教 DELPHI API 多线程中传递多个参数写法。

lsgzs 发布于 2014-06-16 09:33, 4244 次点击

大家好,请教个问题。

DELPHI中api创建多线程怎么传递多个参数



getf(a,b:Tarr);

BeginThread(nil,0,@getf,nil,0,Tid);

getf(a,b:Tarr);这里的A和B是个动态数组

该怎么写。
2 回复
#2
haiou3272014-06-23 17:09
Tarr = array of Byte;
  pr = record
    ta, tb: Tarr;
  end;
  PPr = ^pr;
var
  h: THandle;

Procedure getf(p: PPr); stdcall;
begin
  Form1.Button1.Caption := Format('Ta:%d+1,   Tb:%d+1', [High(P.ta), High(P.tb)]);
  Dispose(P);
  ExitThread(0);
end;

procedure Tform1.Button1Click(Sender: TObject);
var
  pc: PPr;
  tid: Cardinal;
begin
  New(pc);
  SetLength(PC.ta, 10);
  SetLength(pc.tb, 12);
  try
    h := createThread(nil, 0, @getf, pc, 0, Tid);
  finally
    if h <> 0 then CloseHandle(h);
  end;
end;

[ 本帖最后由 haiou327 于 2014-6-23 21:35 编辑 ]
#3
lsgzs2014-10-23 21:05
以下是引用haiou327在2014-6-23 17:09:09的发言:

Tarr = array of Byte;
  pr = record
    ta, tb: Tarr;
  end;
  PPr = ^pr;
var
  h: THandle;
 
Procedure getf(p: PPr); stdcall;
begin
  Form1.Button1.Caption := Format('Ta:%d+1,   Tb:%d+1', [High(P.ta), High(P.tb)]);
  Dispose(P);
  ExitThread(0);
end;
 
procedure Tform1.Button1Click(Sender: TObject);
var
  pc: PPr;
  tid: Cardinal;
begin
  New(pc);
  SetLength(PC.ta, 10);
  SetLength(pc.tb, 12);
  try
    h := createThread(nil, 0, @getf, pc, 0, Tid);
  finally
    if h <> 0 then CloseHandle(h);
  end;
end;

感谢您的帮忙,我一阵子没上论坛。看到您的帮助。感谢。
1