首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

DELPHI导出TXT判断字段值长度后又输出

2013-01-11 
DELPHI导出TXT判断字段值长度后再输出导出按钮代码:procedure TFormdrdf.BitBtn6Click(Sender: TObject)v

DELPHI导出TXT判断字段值长度后再输出
导出按钮代码:

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伊来昌          68851209012000151935000000002185630121197404052816

00256伊正权          68851209012000151946000000004370630121193911162819

00257陈录             688512090120001519570000003146.4630121196305242812

00258陈启             68851209012000151968000000004807630121196412022815

[解决办法]
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:上一贴你还没结分DELPHI导出TXT判断字段值长度后又输出

热点排行