00129张富昌 688512090120001504360000000020976630121196403172811
00129张富昌 688512090120001504360000002097.6630121196403172811
上面一行的20976是EXCEL表里的数据,实际是20.976,导出后我的成了20976,我要实现的是像下面一行的2097.6 也就是小数点往后移两位,而且中间的8个0要少2个0,代码如何实现,我的导出按钮的代码是
procedure TFormdrdf.BitBtn6Click(Sender: TObject);
var
tfile: TextFile;
i: Integer;
begin
assignfile(tfile,'d:\d2.txt');
rewrite(tfile);
begin
ADOQuery1.first;
for i:=1 to ADOQuery1.recordcount do
begin
write(tfile, Format('%.5d',[i])+ADOQuery1.fieldbyname('id').AsString);
write(tfile, Format('%-16s',[ADOQuery1.fieldbyname('姓名').AsString]) );
write(tfile, ADOQuery1.fieldbyname('帐号').AsString+ '00000000');
write(tfile, StringReplace(ADOQuery1.fieldbyname('金额').AsString,'.','',[rfReplaceAll]) );
writeln(tfile,ADOQuery1.fieldbyname('身份证号').AsString);
ADOQuery1.next;
end;
end;
closefile(tfile);
MessageBox(GetActiveWindow(), '数据处理完毕,已保存到D盘,文件名为:dfgz.txt', '导出提醒', MB_OK +
MB_ICONWARNING);
end;
我这里的帐号后面是用的8个0作占位,(已就是如果小数点后面有三位,就要把小数点往后移两位,如果小数点后面只有两位,则要把小数点去掉)如果把小数点往后移了两位,这8个0还得少两个0,金额字段我替换小数点了,好像这里也得改吧,如果改这个代码呢?
00129张富昌 688512090120001504360000002097.6630121196403172811
上面一行的20976是EXCEL表里的数据,实际是20.976,导出后我的成了20976,我要实现的是像下面一行的2097.6 也就是小数点往后移两位,而且中间的8个0要少2个0,代码如何实现,我的导出按钮的代码是
procedure TFormdrdf.BitBtn6Click(Sender: TObject);
var
tfile: TextFile;
i: Integer;
begin
assignfile(tfile,'d:\d2.txt');
rewrite(tfile);
begin
ADOQuery1.first;
for i:=1 to ADOQuery1.recordcount do
begin
write(tfile, Format('%.5d',[i])+ADOQuery1.fieldbyname('id').AsString);
write(tfile, Format('%-16s',[ADOQuery1.fieldbyname('姓名').AsString]) );
write(tfile, ADOQuery1.fieldbyname('帐号').AsString+ '00000000');
write(tfile, StringReplace(ADOQuery1.fieldbyname('金额').AsString,'.','',[rfReplaceAll]) );
writeln(tfile,ADOQuery1.fieldbyname('身份证号').AsString);
ADOQuery1.next;
end;
end;
closefile(tfile);
MessageBox(GetActiveWindow(), '数据处理完毕,已保存到D盘,文件名为:dfgz.txt', '导出提醒', MB_OK +
MB_ICONWARNING);
end;
我这里的帐号后面是用的8个0作占位,(已就是如果小数点后面有三位,就要把小数点往后移两位,如果小数点后面只有两位,则要把小数点去掉)如果把小数点往后移了两位,这8个0还得少两个0,金额字段我替换小数点了,好像这里也得改吧,如果改这个代码呢?
你说的8个'0'占位应该是金额的位置吧!
-------------------------
下边的例子相当于你的一次for内循环结果, 看一下是否是你想要的
procedure TForm8.btn1Click(Sender: TObject);
Function Fillstr(const s : string; const count : integer):string;
var i : integer;
begin
Result := '';
for i := 1 to count do
Result := result + s
end;
const
ID = 129;
NAME = '张富昌';
ACCOUNT = '68851209012000150436';
MONEY = 20.976;
UID = '630121196403172811';
Money_Len = 12; //金额串的存放长度
var
s, sMoney : string;begin
sMoney := CurrToStr(MONEY * 100);
sMoney := Fillstr('0', Money_Len - Length(sMoney)) + sMoney;
s := Format('%.5d', [ID]) +
Format('%-16s',[NAME]) +
ACCOUNT +
sMoney +
UID;
ShowMessage(s);
end;