查出的数据集为如下:
ZhGDH,ZhGID,ZhGMCh
----------------------
1000 001 张三
1001 002 李四
.....
数据很多,但格式是这样。我在把它输出到文本中,输出的问题已经解决。但因为我要把
‘1000 001 张三’这一行中每一个都扩充为固定的长度输出到文本,并输完一行后
回车换车。
begin
with ADOQuery do
begin
first;
while not eof do
begin
for i:=0 to Fieldcount-1 do
begin
ZhGDH_ := copy(DocQuery.FieldByName('ZhGDH').AsString + ' ',1,6);
ZhGID_ := copy(DocQuery.FieldByName('ZhGID').AsString + ' ',1,6);
ZhGMCh_ := copy(DocQuery.FieldByName('ZhGMCh').AsString + ' ',1,12);
ZhGDH_ := ZhGDH_ + ZhGID_ + ZhGMCh_;
FileName := 'CK.txt';
WriteZhLTXT(ZhGDH_,FileName);
end;
Next;
end;
end;
end;procedure WriteZhLTXT(aString ,FileName :String);
var
RZFileName :TFileName;
FLog : TextFile;
begin
try
RZFileName := 'c:\1.txt';
AssignFile(FLog,RZFileName);
if FileExists(RZFileName) then
Append(FLog)
else
Rewrite(FLog);
WriteLn(FLog, aString);
CloseFile(FLog);
except
ShowMessage('写文件时错误');
exit;
end
end;我程序是这样写的,但在执行时,它会把每条纪录都输出三遍,最后一条记录输出两遍,请教各位要如何解决?我也知道是我那个for循环中的问题,但没有想到什么好办法。很急!多谢!
ZhGDH,ZhGID,ZhGMCh
----------------------
1000 001 张三
1001 002 李四
.....
数据很多,但格式是这样。我在把它输出到文本中,输出的问题已经解决。但因为我要把
‘1000 001 张三’这一行中每一个都扩充为固定的长度输出到文本,并输完一行后
回车换车。
begin
with ADOQuery do
begin
first;
while not eof do
begin
for i:=0 to Fieldcount-1 do
begin
ZhGDH_ := copy(DocQuery.FieldByName('ZhGDH').AsString + ' ',1,6);
ZhGID_ := copy(DocQuery.FieldByName('ZhGID').AsString + ' ',1,6);
ZhGMCh_ := copy(DocQuery.FieldByName('ZhGMCh').AsString + ' ',1,12);
ZhGDH_ := ZhGDH_ + ZhGID_ + ZhGMCh_;
FileName := 'CK.txt';
WriteZhLTXT(ZhGDH_,FileName);
end;
Next;
end;
end;
end;procedure WriteZhLTXT(aString ,FileName :String);
var
RZFileName :TFileName;
FLog : TextFile;
begin
try
RZFileName := 'c:\1.txt';
AssignFile(FLog,RZFileName);
if FileExists(RZFileName) then
Append(FLog)
else
Rewrite(FLog);
WriteLn(FLog, aString);
CloseFile(FLog);
except
ShowMessage('写文件时错误');
exit;
end
end;我程序是这样写的,但在执行时,它会把每条纪录都输出三遍,最后一条记录输出两遍,请教各位要如何解决?我也知道是我那个for循环中的问题,但没有想到什么好办法。很急!多谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货