基类窗体
TFrmDFMBase = class(TForm)
     public
        Function GetReBufData:Single;Virtual;
end;procedure ThreadFunction(lpParameter:TFrmDFMBase);Stdcall;
Var
    ReceiveValue:Single;
begin
    while TRUE do
    begin
        if GetRevDataFlag then //收到返回信息
        begin
            //为什么会出错误?执行下面一句时
            ReceiveValue:=TFrmDFMBase(lpParameter).GetReBufData;//取数据        end;    end;end;procedure TFrmDFMBase.FormCreate(Sender: TObject);
begin
           //创建线程 侦听并处理数据
    CreateThread(nil,0,@ThreadFunction,self,0,ThreadId);
end;
在子类窗体中重写GetReBufData

解决方案 »

  1.   


    掉了一句声明
    procedure TFrmDFMBase.FormCreate(Sender: TObject);
    var
       ThreadId:Dword;  
    begin
               //创建线程 侦听并处理数据
        CreateThread(nil,0,@ThreadFunction,self,0,ThreadId);
    end;
      

  2.   

    ReceiveValue:=lpParameter.GetReBufData;//取数据
    这样就行啦...
      

  3.   

    TFrmDFMBase(lpParameter).GetReBufData出错的话,可能是你在基类里面没有实现这个Get函数的缘故,ReceiveValue:=lpParameter.GetReBufData;则直接调用子类重载后的函数。