一行行处理太慢了啊。。有什么好办法。。stringrid中的数据如何导出成文件文件啊。。

解决方案 »

  1.   

      TStringGrid = class(TDrawGrid)
      private
        FData: Pointer;
        FRows: Pointer;
        FCols: Pointer;看你怎么处理了.
      

  2.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      I,II : Integer;
      TempList  : TStringList;
      Temp : string;
    begin
      TempList := TStringList.Create;
      try
      for I := 0 to self.StringGrid1.RowCount -1 do
      begin
        Temp := '';
        for II := 0 to self.StringGrid1.ColCount -1 do
          Temp := Temp+ self.StringGrid1.Rows[I].Strings[II];
        TempList.Add(Temp);
      end;
      if TempList.Count > 0 then TempList.SaveToFile('Test.txt');
      finally
          TempList.Free;
      end;
    end;
      

  3.   


    没看清楚,原来lz就是觉得一行一行处理慢了。  2l 方法貌似可以.........
      

  4.   

    专门为你写的:
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      i: Integer;
      tmpList: TStringList;
    begin
      tmpList := TStringList.Create;
      try
        for i := 0 to StringGrid1.RowCount - 1 do
        begin
          tmpList.AddStrings(StringGrid1.Rows[i]);
        end;
        if tmpList.Count > 0 then
        begin
          tmpList.SaveToFile('Export.txt');
        end;
      finally
        FreeAndNil(tmpList);
      end;
    end;这样效率肯定要比你代码的效率高一截.
    另外,如果数据量大,建议不要先装在内存中,可以建立磁盘文件,读取GRID的每一行后直接写入磁盘文件即可.GOOD LUCK!
      

  5.   


    哈哈,确实高一截,感谢这么仁兄啊。delphi 库不是很熟悉。