程序在执行exporttext.ADOTable1.Open;这行时出错,抛了一个“Project test.exe raised exception class EvarinatInvalidOpError with message'Invalid variant operation'”,兄弟郁闷了呀,这是哪的错呀?小弟急等,请各位大虾帮忙!
procedure TForm1.g1Click(Sender: TObject);
var exportText: TFrame1;
    dataModule:TDataModule1;
    //align:TAlign;
begin
     if not( preFrame=nil ) then  preFrame.Free;
     exportText := TFrame1.Create(self);
     exportText.Align := alClient;
     exporttext.Parent := Form1.Panel1;
     dataModule:= TDataModule1.Create(self);
     //exportText.ADOTable1.Refresh;
     exporttext.ADOTable1.Open;
     preFrame := exportText;
end;

解决方案 »

  1.   

    动态创建的对象需要释放
    try
       ....create(nil)
    finally
       ....free;
    end;
      

  2.   

    我感觉是这里的问题:
    if not( preFrame=nil ) then  preFrame.Free;
    首先,最好设在TForm1的Create或Active中设preFrame:=nil
    另外,preFrame.Free;后不会自动变为nil,所以第二次click时,会再次调用preFrame.Free;
    所以要改为
    if not( preFrame=nil ) then 
    begin
      preFrame.Free;
      preFrame:=nil;
    end;