导出按钮代码:procedure TFormdrdf.BitBtn6Click(Sender: TObject);var  tfile: TextFile;  i: Integer;begin      assignfile(tfile,'d:\11.txt');    rewrite(tfile);
    begin       ADOQuery1.first;    for   i:=1   to   ADOQuery1.recordcount   do        begin     writeln(tfile, Format('%.5d',[i])+ADOQuery1.fieldbyname('id').AsString + ADOQuery1.fieldbyname('姓名').AsString + '          ' +  ADOQuery1.fieldbyname('帐号').AsString+ '00000000'+ StringReplace(ADOQuery1.fieldbyname('金额').AsString,'.','',[rfReplaceAll]) +  ADOQuery1.fieldbyname('身份证号').AsString);       ADOQuery1.next;   end;  end;    closefile(tfile);     MessageBox(GetActiveWindow(), '数据处理完毕,已保存到D盘,文件名为:dfgz.txt', '导出提醒', MB_OK +        MB_ICONWARNING);end;我现在想判断ADOQuery1.fieldbyname('姓名').AsString 姓名字段的值,如果是两个字的名字后面就加10个空格字符,如果是三个字的名字就加12个空格,如果是四个字的就加15个空格,这段代码该如何改,急救啊,各位,谢了最终要达到如下格式,要后面的帐号要对齐,前面的空格则根据字的多少来补充00255伊来昌          6885120901200015193500000000218563012119740405281600256伊正权          6885120901200015194600000000437063012119391116281900257陈录             688512090120001519570000003146.463012119630524281200258陈启             68851209012000151968000000004807630121196412022815

解决方案 »

  1.   

    writeln(tfile, Format('%.5d',[i])+ADOQuery1.fieldbyname('id').AsString + ADOQuery1.fieldbyname('姓名').AsString + getspace(ADOQuery1.fieldbyname('姓名').AsString) +  ADOQuery1.fieldbyname('帐号').AsString+ '00000000'+ StringReplace(ADOQuery1.fieldbyname('金额').AsString,'.','',[rfReplaceAll]) +  ADOQuery1.fieldbyname('身份证号').AsString);function getspace(_name:String):String
    var _i:integer;
    namelength,spacelength,wholelength:integer;
    begin
      wholelength:=20;//连名带空长度一共20
      namelength:=length(_name);
      spacelength:=wholelength-namelength;
      if spacelength<0 then result:=''//名字太长就不空格了
        else for _i:=0 to spacelength-1 do result:=Result+' ';
    end;没测……不过大体是这么个意思……不要笑我
      

  2.   

    function PrintSpace(iCount:Integer);//增加一个函数,作用为输出iCount个空格
    var
    i:Integer;
    begin
      Result:='';
      for i:=1 to iCount do
        Result:=Result+' ';
    end;
    procedure TFormdrdf.BitBtn6Click(Sender: TObject);
    const
    iSpaceCount=20;//假设中间总共有20个空格的位置

    var  tfile: TextFile;  i: Integer;
      sSpace:string;//空格字符串
    begin      assignfile(tfile,'d:\11.txt');    rewrite(tfile);
        begin       ADOQuery1.first;    for   i:=1   to   ADOQuery1.recordcount   do        begin
         sSpace:=PrintSpace(iSpaceCount-Length(Format('%.5d',[i])+ADOQuery1.fieldbyname('id').AsString + ADOQuery1.fieldbyname('姓名').AsString));
         writeln(tfile, Format('%.5d',[i])+ADOQuery1.fieldbyname('id').AsString + ADOQuery1.fieldbyname('姓名').AsString +sSpace+  ADOQuery1.fieldbyname('帐号').AsString+ '00000000'+ StringReplace(ADOQuery1.fieldbyname('金额').AsString,'.','',[rfReplaceAll]) +  ADOQuery1.fieldbyname('身份证号').AsString);

           ADOQuery1.next;   end;  end;    closefile(tfile);     MessageBox(GetActiveWindow(), '数据处理完毕,已保存到D盘,文件名为:dfgz.txt', '导出提醒', MB_OK +        MB_ICONWARNING);end;未经测试,应该这是这样。PS:上一贴你还没结分