读书人

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

发布时间: 2013-01-11 11:57:35 作者: rapoo

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判断字段值长度后又输出

读书人网 >.NET

热点推荐