我有一个函数 function ThreadFuc(t:string):string 要声明为线程函数,可是createthread函数传递的是线程函数的地址,那么ThreadFuc的参数应该怎样传递呢

解决方案 »

  1.   

    //线程函数用指针就可以了
    function ThreadFuc(t:PChar):string;
    beginend;var
    tid:dword;
    pInfo:PCharCreateThread(nil,0,@SendPass,pInfo,0,tid);
      

  2.   

    我是说怎么传递函数里面的参数t,pInfo能传递吗
      

  3.   

    线程函数的那个参数就是你用CreateThread创建线程时传进去的那个变量。另外不可以用function ThreadFuc(t:string):string;作为线程函数,
    必须用function ThreadFunc(t: string): string; stdcall;才行。例如可以用如下方法将局部字符串变量s传给线程作为参数:
    var
      s: string;
      id: Cardinal;
    begin
      s := '123456';
      CreateThread(nil, 0, @ThreadFunc, pointer(s), 0, id);
      Integer(s) := 0;   // 欺骗delphi编译器以防止其自动释放局部变量s
    end;