定义的变量不是全局变量或者其他公共资源
有点不解啊
希望高手指点一下,,,

解决方案 »

  1.   

    应该是在线程中修改TStringList或TStrings的内容了吧!应该上点代码看下!
      

  2.   


    确实是修改了
    记得以前看过TStrings是地址的方式操作
    但是我那个是局部变量 哎 有点费劲麻烦指点一下procedure notice();
    var
      notic :string;
      notic_line :tstrings;
    begin
      notic := 'test _testaaaaaaaaaaaaaaaa';
      notic_line.Text := notic;
      frmmain.memo_notic.Lines.text := notic_line.Text;
    end;
    不是全部代码就是出错的这个地方
    调用代码是notic_Thread := CreateThread(nil, 0, @get_notice, nil, 0, get_notice_ID);
      

  3.   

    调用是
    notic_Thread := CreateThread(nil, 0, @notice, nil, 0, get_notice_ID);
      

  4.   

    notic_line没初始化就用吗?这样肯定会报错的。
    而且,frmmain.memo_notic看来像是窗体上的控件,在多线程中对这种全局对象进行操作,不加锁肯定是有问题的
      

  5.   


    procedure notice();
    var
      notic :string;
      notic_line :TStringList;
    begin
      notic_line := TStringList.create;
      try
        notic := 'test _testaaaaaaaaaaaaaaaa';
        notic_line.Text := notic;
        frmmain.memo_notic.Lines.text := notic_line.Text;
      finally
        notic_line.Free;
      end
    end;
      

  6.   

    你都没创建notic_line,和线程一点关系都没。
      

  7.   


    确实解决了
    但是我把notic_line :TStringList;换成notic_line :TStrings;就不行 这是为什么?
      

  8.   

    notic_line :TStringList;换成notic_line :TStrings;就不行 这是为什么?因为不能申明TStrings