以下是我的测试算法:
procedure TForm1.Button2Click(Sender: TObject);
var
testfile:textfile;
begin
query1.open;
query1.First;
if savedialog1.Execute then begin
assignfile(testfile,savedialog1.FileName+'.txt');
rewrite(testfile);
while  not query1.Eof do
begin
writeln(testfile,query1.fields[0].asstring+'   '+query1.fields[1].asstring+'   '+datetostr(query1.fields[2].asdatetime));
query1.Next;
end;
closefile(testfile);
end;
end;
这样测试后,是可以正确转为txt文件,可是就是同一列无法对齐(如左对齐)。
请看结果值:
1130137392   林斌     01-04-24
1130140150   游合平     01-03-12
..........
请高手指点!
谢谢!

解决方案 »

  1.   

    利用format语句将人名格式化成固定位数
      

  2.   

    writeln(testfile,query1.fields[0].asstring+'   '+trim(query1.fields[1].asstring)+'   '+datetostr(query1.fields[2].asdatetime));
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      DbgridToTxt(dbgrid1);
    end;
    procedure Tform1.DbgridToTxt(source:Tobject);
    var
      filename:Textfile;
      Dataset:Tdataset;
      titlestr,valuestr,tempstr:string;
      counter:integer;
    begin
      if (source is Tdbgrid)then
        Dataset:=Tdbgrid(source).DataSource.DataSet
        else
          Dataset:=TDataset(source);
      if ((Dataset.IsEmpty)or(not Dataset.Active))then
        exit else
        begin
          Dataset.DisableControls;
          Dataset.First;
          if savedialog1.Execute then
            begin
              assignfile(filename,savedialog1.FileName);
              rewrite(filename);
              for counter:=0 to Dataset.FieldCount-1 do
              titlestr:=titlestr+char(9)+Dataset.Fields[counter].DisplayLabel;
              titlestr:=trim(titlestr);
              writeln(filename,titlestr);
              while not Dataset.Eof do
                begin
                  valuestr:='';
                  for counter:=0 to Dataset.FieldCount-1 do
                  begin
                    tempstr:=Dataset.Fields[counter].Text;
                    valuestr:=valuestr+char(9)+tempstr;
                  end;
                  valuestr:=trim(valuestr);
                  writeln(filename,valuestr);
                  Dataset.Next;
                end;
                  closefile(filename);
              end;
                  Dataset.EnableControls;
        end;
    end;
      

  4.   

    只能用WRITELN了..先用FORMAT格式一下..