type
    Tdata=record
    Time:              string;      
    CardNO:            string;          
    State:             Integer;  
   end;//定义结构体
function ThredSendData(lpParameter: Pointer):Boolean;//线程函数声明
///////////////////////////////////////////////////////////////////////////
var
Math : ^Tdata;
data:    Tdata;
begin
  ..
  ..//初始化结构体data
  Math:=@data;
BeginThread(nil,0,@ThredSendData,Pointer(Math),0,ThreadID);//开始执行线程函数
end;
基本上是这样传递的参数,为什么我在线程中得不到结构体中的值?请高手指教。。

解决方案 »

  1.   


    type
      Pdata =^Tdata;  Tdata=record
      Time: string;
      CardNO: string;
      State: Integer;
      end;//定义结构体function ThredSendData(lpParameter: Pointer):Boolean;//线程函数声明
    var str: string;
        m_param: Pdata;
    begin
      if lpParameter <> nil then
      begin
        m_param := Pdata(lpParameter);
        str := Format('data.Time=%s,data.CardNO=%s,data.State=%d',[m_param.Time, m_param.CardNO, m_param.State]);  end;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Math: Pdata;
      ThreadID: Cardinal;
    begin
      New(Math);
      Math.Time := 'time';
      Math.CardNO := 'cardno';
      Math.State := 1;
      BeginThread(nil,0,@ThredSendData,Pointer(Math),0,ThreadID);//开始执行线程函数
    end;