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

DELPHI7导出TXT还是老有关问题,怎么格式化小数点

2013-03-01 
DELPHI7导出TXT还是老问题,如何格式化小数点00129张富昌68851209012000150436000000002097663012119640317

DELPHI7导出TXT还是老问题,如何格式化小数点

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,金额字段我替换小数点了,好像这里也得改吧,如果改这个代码呢?

[解决办法]
另一个帖子回复了, 粘过来

被你的描述绕晕了  :)
你说的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;

热点排行