能不能改成不用“元、角、分”呀?看下面的function:
Function Tform1.NtoC( n0 :real) :String;
  Function IIF( b :boolean; s1,s2 :string) :string;
begin 
if b then IIF:= s1 else IIF:=s2;
    end; //本函数的功能一目了然: 当b为真时返回s1,否则返回s2
  Const c= '零壹贰叁肆伍陆柒捌玖◇分角圆拾佰仟万拾佰仟亿拾佰仟万';
  var L,i,n :integer;   Z :boolean;   s,s1,s2 :string;
begin
  s:= FormatFloat( '0.00', ABS(n0));
  L:= Length( s);
  Z:= n0<1;
  For i:= 1 To L-3 do
    begin
    n:= StrToInt( s[ L-i-2]);
    s1:=IIf((n=0)And(Z Or (i=9) Or (i=5) Or (i=1)), '', Copy( c, n*2+1, 2))
      + IIf((n=0)And((i<>9)And(i<>5)And(i<>1) Or Z And(i=1)),'',Copy(c,(i+13)*2-1,2))
      + s1;
    Z:= (n=0);
    end;
  Z:= False;
  For i:= 1 To 2 do
    begin
    n:= StrToInt( s[ L-i+1]);
    s2:= IIf((n=0)And((i=1) Or (i=2)And(Z Or (n0<1))), '', Copy( c, n*2+1, 2))
       + IIf( (n>0), Copy( c,(i+11)*2-1, 2), IIf( (i=2) Or Z, '','整'))
       + s2;
    Z:= (n=0);
    end;
  For i:= 1 To Length( s1) do If Copy(s1, i, 4) = '亿万' Then Delete(s1,i+2,2);
  NtoC:= IIf(n0=0, '零', IIF(n0<0, '-','')+ s1+s2);
End;每次调用时都会有多少元多少角多少分,能不能去掉元角分呀?我调用后产生的字串不要元角分,要这样的:"参拾贰点伍捌”,多了一个“点”,
多谢!

解决方案 »

  1.   

    ?你把Z:= False;后面的代码砍了不就结了?
      

  2.   

    ?
    你把  Z:= False;后面的i:0 to 2的循环砍了不就结了?
      

  3.   

    终于改好了,给分吧
    Function NtoC( n0 :real) :String;
      Function IIF( b :boolean; s1,s2 :string) :string;
    begin
    if b then IIF:= s1 else IIF:=s2;
        end; //本函数的功能一目了然: 当b为真时返回s1,否则返回s2
      Const c= '零壹贰叁肆伍陆柒捌玖点拾佰仟万拾佰仟亿拾佰仟万';
      var L,i,n :integer;   Z :boolean;   s,s1,s2 :string;
    begin
      s:= FormatFloat( '0.00', ABS(n0));
      L:= Length( s);
      Z:= n0<1;
      For i:= 1 To L-3 do
        begin
        n:= StrToInt( s[ L-i-2]);
        s1:=IIf((n=0)And(Z Or (i=9) Or (i=5) Or (i=1)), '', Copy( c, n*2+1, 2))
          + IIf((n=0)And((i<>9)And(i<>5)And(i<>1) Or Z And(i=1)),'',Copy(c,(i+10)*2-1,2))
          + s1;
        Z:= (n=0);
        end;
      if Length(s1)=0 then s1 := '零点' ;
      Z:= False;
      For i:= 1 To 2 do
        begin
        n:= StrToInt( s[ L-i+1]);
        s2:= IIf((n=0)And((i=1) Or (i=2)And(Z Or (n0<1))), '', Copy( c, n*2+1, 2)) + s2;
        Z:= (n=0);
        end;
      if Length(s2)=0 then s1 := LeftStr(s1,Length(s1)-1);
      For i:= 1 To Length( s1) do If Copy(s1, i, 4) = '亿万' Then Delete(s1,i+2,2);
      NtoC:= IIf(n0=0, '零', IIF(n0<0, '-','')+ s1+s2);
    End;