我有一个空间类 TForm2 = class(TForm)
然后我写了一个多线程的程序:procedure Test(Sender: TObject);stdcall;
var
Exchange: string;
Date: PCHAR;
IsTradingTime_Result: integer;
obj: TForm2;
begin
    obj.Create(application);
    Exchange := obj.ComboBox4.Text;
    Date := PCHAR(obj.IsTradingTimeEdit.Text);
    IsTradingTime_Result := IsTradingTime(StrToInt(Exchange),Date);
    obj.IsTradingTimeResult.Text := IntToStr(IsTradingTime_Result);
    obj.Free;
end;procedure TForm2.MulThreadIsTradingDayClick(Sender: TObject);
var
  ThreadID: DWORD;
  hThreadHandle: THandle;
begin
  hThreadHandle := CreateThread(nil,0,@Test,nil,0,ThreadID);end;
我现在一按MulThreadIsTradingDay按钮,代码就崩溃了,提示 obj.Create(application);
有问题,请问我该怎样改才可以呢?

解决方案 »

  1.   

    看错了obj.Create(application);
    应该是TForm2.Create(application);现在的问题是 obj.IsTradingTimeResult.Text := IntToStr(IsTradingTime_Result);
    这条语句我想往IsTradingTimeResult编辑框里面写内容,但是现在这样写的话内容出不来
    因为Test是全局函数,所以单独的obj对象是不能往编辑框中写内容的,请问我要怎么写才可以? 
      

  2.   

    Test函数就只有简单的读取操作,为什么要写成线程函数?
    不要在线程里操作VCL
      

  3.   

    obj := TForm2.Create(application);
      

  4.   

    我现在就是想写个多线程反复往控件里面写内容,测试接口用的,所以请帮忙看看在多线程里面怎样往控件里面写内容好吗?我现在obj.IsTradingTimeResult.Text := IntToStr(IsTradingTime_Result);
    这一句不起作用,应该怎么该才对呢?
      

  5.   

    请问怎样往ListView里面添加数据呢?我用
    listview1.items.add.caption := 'a';
    listview1.items.add.subitems[0] := 'b';
    listview1.items.add.subitems[1] := 'c';程序结果崩溃了,提示
     List index out of bounds(0),请问应该如何正确往里面添加数据呢?
      

  6.   

    li:=listview1.items.add;
    li.caption := 'a';