线程类:
TMyThread = class(TThread)   //线程
   private
      FTag: Integer; //不同的创建标志 1- 2-
      FTitle: String;    
      FmyDataArray: array of TCellData; 
      FLen: Integer;    
      FError: Boolean;  
      FFinished: Boolean; 
      Fhwnd: integer;
      FZf: Double; 
      FExcelFileName: String; 
      FStrGrid: TStringGrid;
      procedure DataToExcelFile(var dataArray: array of TCellData);
      procedure ExcelDataToGrid(excelFileName:String;var Grid:TStringGrid);
   protected
      procedure Execute; override;
      function GetZf: Double;
   public
      constructor Create(ghwnd:integer;var gt: String;
                      var dataArray:array  f TCellData); overload;
      constructor Create(var excelF:String;ghwnd:integer;
                      var Grid: TStringGrid);overload;
      procedure setTitle(var gt: String);
      function getTitle(): String;
      procedure AssignGrid(var StrGrid:TStringGrid);
   published
      property Zf: Double read GetZf;
   end;
//================================================
constructor TMyThread.Create(ghwnd:integer;var gt: String;
var dataArray: array of TCellData);
var
  i: integer;
begin
   FTag:=1;
   FZf:=0;
   FExcelFileName:='';
   FStrGrid:= nil;
   for i:=0 to 100 do
     sleep(10); //
   setlength(FmyDataArray,length(dataArray));
   for i:= low(dataArray) to high(dataArray) do
   begin
 FmyDataArray[i].aCol:= dataArray[i].aCol;
 FmyDataArray[i].aRow:= dataArray[i].aRow;
 FmyDataArray[i].CellStr:= dataArray[i].CellStr;
   end;
   Fhwnd:= ghwnd;
   Ftitle:= gt;
   FError:= False;
   FFinished:= False;
   FLen:= high(dataArray) - low(dataArray) + 1;
   FreeOnTerminate := True;
   inherited Create(False);
end;
constructor TMyThread.Create(ghwnd:integer;var excelF:String;var Grid: TStringGrid);
begin
  ftag:= 2;
  FZf:=0;
  FExcelFileName:=excelF;
  FStrGrid:= Grid;
  Fhwnd:= ghwnd;
  FError:= False;
  FFinished:= False;
  FreeOnTerminate := True;
  inherited Create(False);
end;
/////////////////////////
procedure TForm.BtnClick(sender:tobject);
var
  _myth: tmythread;
  str: string;
begin
   str:= trim(edit1.text);
   _myth:= tmythread.create(handle,str,stringgrid1);
   //为什么创建线程类的时候提示错误?
   //[Error] Unit1.pas(99): There is no overloaded version 
   //of 'Create' that can be called with these arguments
end;

解决方案 »

  1.   

    没别的,就是上下声明要一致 -_-!!!
       public
          constructor Create(ghwnd: Integer; var gt: string;
            var dataArray: array of TCellData); overload;
          constructor Create(var excelF: string; ghwnd: Integer;
            var Grid: TStringGrid); overload;
    //...
    constructor TMyThread.Create(ghwnd: Integer; var gt: string; 
      var dataArray: array of TCellData);constructor TMyThread.Create(var excelF: string; ghwnd: Integer; 
      var Grid: TStringGrid);
      

  2.   

    Create 后加 overload;inherited Create(False);
    FreeOnTerminate := True;
     
    强烈不建议将控件
      

  3.   

    constructor Create(var excelF: string; ghwnd: Integer;
            var Grid: TStringGrid); overload
    这个已经 改过来了
    复制时候的错误,程序里改过来了,还是不行啊
      

  4.   

    //难道非要贴全你才知道?type
      TCellData = record
        aCol: Integer;
        aRow: Integer;
        CellStr: string;
      end;
       TMyThread = class(TThread)   //Ïß³Ì
       private
          FTag: Integer; //²»Í¬µÄ´´½¨±êÖ¾ 1- 2-
          FTitle: String;    
          FmyDataArray: array of TCellData;
          FLen: Integer;
          FError: Boolean;  
          FFinished: Boolean; 
          Fhwnd: integer;
          FZf: Double; 
          FExcelFileName: String;
          FStrGrid: TStringGrid;
          procedure DataToExcelFile(var dataArray: array of TCellData);
          procedure ExcelDataToGrid(excelFileName:String;var Grid:TStringGrid);
       protected
          procedure Execute; override;
          function GetZf: Double;
       public
          constructor Create(ghwnd:integer; var gt: String;
                          var dataArray:array of TCellData); overload;
          constructor Create(ghwnd:integer; var excelF:String;
                          var Grid: TStringGrid);overload;
          procedure setTitle(var gt: String);
          function getTitle(): String;
          procedure AssignGrid(var StrGrid:TStringGrid);
       published
          property Zf: Double read GetZf;
       end;
    //================================================
    constructor TMyThread.Create(ghwnd:integer;var gt: String;
    var dataArray: array of TCellData);
    var
      i: integer;
    begin
       FTag:=1;
       FZf:=0;
       FExcelFileName:='';
       FStrGrid:= nil;
       for i:=0 to 100 do
         sleep(10); //
       setlength(FmyDataArray,length(dataArray));
       for i:= low(dataArray) to high(dataArray) do
       begin
     FmyDataArray[i].aCol:= dataArray[i].aCol;
     FmyDataArray[i].aRow:= dataArray[i].aRow;
     FmyDataArray[i].CellStr:= dataArray[i].CellStr;
       end;
       Fhwnd:= ghwnd;
       Ftitle:= gt;
       FError:= False;
       FFinished:= False;
       FLen:= high(dataArray) - low(dataArray) + 1;
       FreeOnTerminate := True;
       inherited Create(False);
    end;procedure TMyThread.AssignGrid(var StrGrid: TStringGrid);
    begin
      //todo
    end;constructor TMyThread.Create(ghwnd:integer; var excelF:String;
                          var Grid: TStringGrid);
    begin
      ftag:= 2;
      FZf:=0;
      FExcelFileName:=excelF;
      FStrGrid:= Grid;
      Fhwnd:= ghwnd;
      FError:= False;
      FFinished:= False;
      FreeOnTerminate := True;
      inherited Create(False);
    end;procedure TMyThread.DataToExcelFile(var dataArray: array of TCellData);
    beginend;procedure TMyThread.ExcelDataToGrid(excelFileName: String;
      var Grid: TStringGrid);
    beginend;procedure TMyThread.Execute;
    begin
      inherited;end;function TMyThread.getTitle: String;
    beginend;function TMyThread.GetZf: Double;
    beginend;procedure TMyThread.setTitle(var gt: String);
    beginend;/////////////////////////
    procedure TForm1.BtnClick(sender:tobject);
    var
      _myth: tmythread;
      str: string;
    begin
       str:= trim(edit1.text);
       _myth:= tmythread.create(handle, str, stringgrid1);
    end;
      

  5.   

    老大,你是说
    声明的这个
    constructor Create(var excelF:String;ghwnd:integer;
                          var Grid: TStringGrid);overload;跟实现的这个
    constructor TMyThread.Create(ghwnd:integer;var excelF:String;var Grid: TStringGrid);
    begin
      ftag:= 2;
      FZf:=0;
      FExcelFileName:=excelF;
      FStrGrid:= Grid;
      Fhwnd:= ghwnd;
      FError:= False;
      FFinished:= False;
      FreeOnTerminate := True;
      inherited Create(False);
    end;
    参数顺序不对吧,这个我在程序里改过来了,
    不过在我程序里还是提示那个错误,
    我新建了一个工程,把代码复制进去就ok了~~~~~
    唉,不管怎么样没事了~