准备做多线程 ,使用函数 creatThread 函数,要往其传递参数,所以
1.首先定义一个记录指针
type  
  MyParam = record
    ffirst :string[255];
    fsn:string[255];
    fip:string[255];
    fzjmc:string[255];
  end;
pMyparam = ^Myparam;
2.向其传入参数
var
 p : Pmyparam;
New(p);
        pmyParam(p)^.ffirst := '0';
        Pmyparam(p)^.fsn  := lsn;
        Pmyparam(p)^.fzjmc := lzjmc;
        Pmyparam(p)^.fip := lIp;        CreateThread(nil, 0, @dealdata, p, 0, id);
3.在线程函数中接受参数
function dealdata(p:pMyparam :longint:stdcall;
begi  lfirst := pmyParam(p)^.ffirst;
end;
问题出现了:
  每个记录指针的第一个字段获不到正确值 ,是一堆乱码,其他字段数据获取正常!
为什么,是不是delphi  记录指针的bug????

解决方案 »

  1.   

    delphi 的 TThread 封装的很好。
    可以试试会不会解决你的问题。
      

  2.   

    改用pchar类型,并分配内存,再试试
      

  3.   

    跟踪调试一下,观察pmyParam(p)^的内容变化
    还有同问一下:为什么不直接用TThread类
      

  4.   

    其實你可直接用TThread类,試試修改成pchar類型再跟蹤看一下結果...
      

  5.   

    我就用你贴出来的代码测试了下,没发现什么乱码的问题。可以肯定的一点是,这绝对不是Delphi的Bug,这是你的Bug。
    碰到问题多查下自己代码的问题先
      

  6.   

    var
     p : Pmyparam;
    New(p);
      Fillchar(p^, sizeof(Myparam),0);//加这句试试
      pmyParam(p)^.ffirst := '0';
      

  7.   

    这样初始化试下   p:=new(Pmyparam);换成全局的 指针变量 再传~~ 
      

  8.   

    问题可能在别处,好好调试一下吧,这样的代码如果都有BUG,那得被多少人骂死。