我这里有一个转换函数,要的话留下E_Mail.

解决方案 »

  1.   

    TO:marysxj(小丸子)
      我正在找你呢,我的email: [email protected] 谢谢!
      

  2.   

    Function SmallToBig(Number:string):String;
    var
    numberunit: array[1..16] of string;{单位数组}
    numbervalue: array[1..10] of string;{数字数组}
    number2:string;{角分数串}
    number1:string;{元以上数串}
    numbertmp:string;{临时数串}
    i:integer; {循环变量}
    flag:integer;{角元分隔}
    zeroflag:integer;{本位零标志 0:本位不为零 1:本位为零}
    fzeroflag:integer;{低位是否有非零数标志 0:低位无非零数 1:低位有非零数}
    ooflag:integer;{最高位是否为零标志 0:最高位为零 1:最高位不为零}
    resulttotal:string;{总结果串}
    result1:string;{元以上结果串}
    result2:string;{角分结果串}
    Begin
    numberunit[2] :='分';
    numberunit[1] :='角';
    numberunit[3] :='元';
    numberunit[4] :='拾';
    numberunit[5] :='佰';
    numberunit[6] :='仟';
    numberunit[7] :='万';
    numberunit[8] :='拾';
    numberunit[9] :='佰';
    numberunit[10] :='仟';
    numberunit[11] :='亿';
    numberunit[12] :='拾';
    numberunit[13] :='佰';
    numberunit[14] :='仟';
    numberunit[15] :='万';
    numberunit[16] :='亿';
    numbervalue[1] :='零';
    numbervalue[2] :='壹';
    numbervalue[3] :='贰';
    numbervalue[4] :='叁';
    numbervalue[5] :='肆';
    numbervalue[6] :='伍';
    numbervalue[7] :='陆';
    numbervalue[8] :='柒';
    numbervalue[9] :='捌';
    numbervalue[10] :='玖';
    number2 :='';
    number1 :='';
    {分解角分元数串}
    flag:=1;
    for i:=1 to length(number) do
    begin
    if number[i]='.' then Flag :=2;
    if flag=1 then number1:=number1+number[i]
    else
    if number[i]<>'.' then number2 := number2+number[i];
    end;
    {除高位零}
    numbertmp := number1;
    number1 := '';
    ooflag := 0;
    for i:=1 to length(numbertmp) do
    begin
    if (numbertmp[i]<>'0') then ooflag:=1;
    if ooflag=1 then number1:=number1+numbertmp[i];
    end;
    {最大值为亿亿元}
    if length(number1)>14 then
    begin
    showmessage('numbercnv out of range!');
    SmallToBig:='';
    end;{组织元以上结果串}
    result1:='';
    zeroflag:=0;
    Fzeroflag:=1;
    for i:=length(number1) downto 1 do
    begin
    if (i=length(number1)) and (strtoint(number1[i])=0) then{个位为零时}
    begin
    fzeroflag:=0;
    zeroflag:=1;
    result1:='元';
    end
    else
    if (i begin
    if (length(number1)-i=4) or (length(number1)-i=8) then{万与亿位设定}
    begin
    if (length(number1)-i=4) and (length(number1)>=8) then
    begin
    if NOT((length(number1)-i=4)and(strtoint(number1[i])=0)
    and(strtoint(number1[i-1])=0) and(strtoint(number1[i-2])=0)
    and(strtoint(number1[i-3])=0)) then
    result1:=numberunit[length(number1)-i+3]+result1;
    end
    else
    result1:=numberunit[length(number1)-i+3]+result1;
    fzeroflag:=0;
    end;
    if fzeroflag=1 then{中间零设置}
    if zeroflag=0 then
    result1:=numbervalue[strtoint(number1[i])+1]+result1;
    zeroflag:=1;
    end
    else{非零数处理}
    begin
    fzeroflag:=1;
    zeroflag:=0;
    result1:=numberunit[length(number1)-i+3]+result1;
    result1:=numbervalue[strtoint(number1[i])+1]+result1;
    end;
    end;
    {组织角分结果串}
    result2:='';
    for i:=1 to length(number2) do
    begin
    if i<3 then
    begin
    if strtoint(number2[i])<>0 then
    begin
    result2:=result2+numbervalue[strtoint(number2[i])+1];
    result2:=result2+numberunit[i];
    end;
    end;
    end;
    ResultTotal := Result1+Result2;
    SmallToBig := ResultTotal;
    End;
      

  3.   

    zzllabc(龙) :我早就给你发过去了,看看去吧
      

  4.   

    TO:cobi(我是小新)
       非常感谢,能不能帮忙看一下http://www.csdn.net/Expert/topic/425/425203.shtm
       谢谢!
      

  5.   

    Function DXZhuanHuan(f : String) : String;
    var Fs,dx,d2,zs,xs,h,jg:string;
       i,ws,l,w,j,lx:integer;
    begin
      f := Trim(f);
      if copy(f,1,1)='-' then begin
        Delete(f,1,1);fs:='负';end
      else fs:='';  dx:='零一二三四五六七八九';
      d2:='十百千万亿';
      i := AnsiPos('.',f);   //小数点位置
      If i = 0 Then
         zs := f     //整数
      Else begin
         zs:=copy(f,1,i - 1);  //整数部分
         xs:=copy(f,i + 1,200);
      End;
      ws:= 0; l := 0;
      For i := Length(zs) downTo 1 do begin
        ws := ws + 1; h := '';
        w:=strtoint(copy(zs, i, 1));
        if (w=0) and (i=1) then jg:='零';
        If w > 0 Then
           Case ws of
             2..5:h:=copy(d2,(ws-1)*2-1,2);
             6..8:begin
               h:=copy(d2,(ws-5)*2-1,2);
               If AnsiPos('万',jg)=0 Then h:=h+'万';
               end;
             10..13:h := copy(d2,(ws-9)*2-1, 2);
           End;
        jg:=copy(dx,(w+1)*2-1,2) + h + jg;
        If ws=9 Then jg := copy(jg,1,2) + '亿' + copy(jg,3,200);
      end;
      j:=AnsiPos('零零',jg);
      While j > 0 do begin
        jg := copy(jg, 1, j - 1) + copy(jg, j + 2,200);
        j := AnsiPos('零零',jg);
      end;
      If (Length(jg) > 1) And (copy(jg,length(jg)-1,2)='零') Then jg :=copy(jg,1,Length(jg)-2);
      j := AnsiPos('零亿',jg);
      If j > 0 Then jg := copy(jg,1, j - 1) + copy(jg, j + 2,200);
      //转换小数部分
      lx := Length(xs);
      If lx > 0 Then begin
        jg := jg + '点';
        For i := 1 To lx do
          jg := jg + copy(dx, strtoint(copy(xs,i,1))*2 + 1, 2)
      End;
      DXZhuanHuan := fs+jg;
    End;
      

  6.   

    TO:marysxj(小丸子)
       在我那个帖子上,你给我的设置连续进纸的函数,能不能给我讲一下?
      

  7.   

    金额小写转大写的子程序
    Function  TFormFhdCw.XxToDx(const hjnum:real):String;
    var Vstr,zzz,cc,cc1,Presult:string;
        xxbb:array[1..12]of string;
        uppna:array[0..9] of string;
        iCount,iZero,vPoint,vdtlno:integer;
    begin
      //*设置大写中文数字和相应单位数组*//
      xxbb[1]:='亿';
      xxbb[2]:='仟';
      xxbb[3]:='佰';
      xxbb[4]:='拾';
      xxbb[5]:='万';
      xxbb[6]:='仟';
      xxbb[7]:='佰';
      xxbb[8]:='拾';
      xxbb[9]:='元';
      xxbb[10]:='.';
      xxbb[11]:='角';
      xxbb[12]:='分';
      uppna[0]:='零';
      uppna[1]:='壹';
      uppna[2]:='贰';
      uppna[3]:='叁';
      uppna[4]:='肆';
      uppna[5]:='伍';
      uppna[6]:='陆';
      uppna[7]:='柒';
      uppna[8]:='捌';
      uppna[9]:='玖';
      Str(hjnum:12:2,Vstr);
      cc:='';
      cc1:='';
      zzz:='';
      result:='';
      presult:='';
      iZero:=0;
      vPoint:=0;
      for iCount:=1 to 10 do
        begin
          cc:=Vstr[iCount];
          if cc<>' ' then
            begin
              zzz:=xxbb[iCount];
              if cc='0' then
              begin
                if iZero<1 then  //*对“零”进行判断*//
                   cc:='零'
                else
                   cc:='';
                if iCount=5 then     //*对万位“零”的处理*//
                   if copy(result,length(result)-1,2)='零' then
                      result:=copy(result,1,length(result)-2)+xxbb[iCount]
    +'零'
                   else
                      result:=result+xxbb[iCount];
                cc1:=cc;
                zzz:='';
                iZero:=iZero+1;
              end
              else
                begin
                  if cc='.' then
                    begin
                      cc:='';
                      if (cc1='') or (cc1='零')  then
                      begin
                         Presult:=copy(result,1,Length(result)-2);
                         result:=Presult;
                         iZero:=15;
                      end;
                      if iZero>=1 then
                         zzz:=xxbb[9]
                      else
                         zzz:='';
                      vPoint:=1;
                    end
                  else
                    begin
                      iZero:=0;
                      cc:=uppna[StrToInt(cc)];
                    end
                end;
              result:=result+(cc+zzz)
            end;
        end;
        If Vstr[11]='0' then   //*对小数点后两位进行处理*//
        begin
           if Vstr[12]<>'0' then
           begin
              cc:='零';
              result:=result+cc;
              cc:=uppna[StrToInt(Vstr[12])];
              result:=result+(uppna[0]+cc+xxbb[12]);
           end
        end
        else
        begin
           if iZero=15 then
           begin
              cc:='零';
              result:=result+cc;
           end;
           cc:=uppna[StrToInt(Vstr[11])];
           result:=result+(cc+xxbb[11]);
           if Vstr[12]<>'0' then
           begin
              cc:=uppna[StrToInt(Vstr[12])];
              result:=result+(cc+xxbb[12]);
           end;
        end;
      result:=result+'正';
    end;
      

  8.   

    要不给我发个E-mail? 再次谢谢!
      

  9.   

    >>>
          
          您不能给自己加分,请返回重新输入......, 返回上一页。 >>>
    结账时怎么总是这个提示,也不管总分多少,不好意思,晚一点再结!
      

  10.   

    Function NumberToChinese(Number:Currency):String;//Stdcall;
    var iNumLength:Integer;//数字长度
        i,k:Integer;
        sNumber:String;
        arChinseUnit:Array [0..13] of String;
        arALB:Array [0..9] of String;
        bZeroFlag,bHasUnit:Boolean;
    begin
      arChinseUnit[0]  :='分';  arChinseUnit[1]  :='角';  arChinseUnit[2]  :='元';
      arChinseUnit[3]  :='拾';  arChinseUnit[4]  :='佰';  arChinseUnit[5]  :='仟';
      arChinseUnit[6]  :='万';  arChinseUnit[7]  :='拾';  arChinseUnit[8]  :='佰';
      arChinseUnit[9]  :='仟';  arChinseUnit[10] :='亿';  arChinseUnit[11] :='拾';
      arChinseUnit[12] :='佰';  arChinseUnit[13] :='仟';
      arALB[0]:='零';  arALB[1]:='壹';  arALB[2]:='贰';  arALB[3]:='叁';  arALB[4]:='肆';
      arALB[5]:='伍';  arALB[6]:='陆';  arALB[7]:='柒';  arALB[8]:='捌';  arALB[9]:='玖';  Try
        sNumber:=Trim(FloatToStr(Abs(Number)));
      Except
        Result:='转换出错!';
        Exit;
      end;
      i:=Pos('.',sNumber);
      iNumLength:=StrLen(PChar(sNumber));
      if (iNumLength-i>13) or (i>13) then begin //整数超过14位
        Result:='数字太大,无法转换!';
        Exit;
      end;
      if ( ( (iNumLength-i)>=3 ) and (i>0) ) then    //处理小数点后大于2位的情况
         sNumber:=Copy(sNumber,1,i+2);
      if ( ( (iNumLength-i)=1 ) and (i>0) ) then    //处理小数点后只有一位的情况补足零
         sNumber:=sNumber+'0';
      if i=0 then                               //处理无小数的情况,无小数点
         sNumber:=sNumber+'.00';
      if i=iNumLength then                      //处理无小数的情况,有小数点
         sNumber:=sNumber+'00';  i:=Pos('.',sNumber);
      sNumber:=Copy(sNumber,1,i-1)+Copy(sNumber,i+1,2);
      iNumLength:=StrLen(PChar(sNumber));
      bZeroFlag:=False;
      bHasUnit:=False;
      Result:='';
      For I:=1 to iNumLength do begin   //处理整数部分
        k:=StrToInt(Copy(sNumber,i,1));    if k<>0 then begin
          bHasUnit:=False;
          if bZeroFlag then begin
            Result:=Result+'零'+arALB[k]+arChinseUnit[iNumLength-i];
            bZeroFlag:=False;
          end else //end if bZeroFlag
            Result:=Result+arALB[k]+arChinseUnit[iNumLength-i];
        end;    if k=0 then begin
          if ( (arChinseUnit[iNumLength-i]<>'角') and (arChinseUnit[iNumLength-i]<>'拾')
                   and (arChinseUnit[iNumLength-i]<>'佰')
                   and (arChinseUnit[iNumLength-i]<>'仟')) then
            if not bHasUnit then begin
              Result:=Result+arChinseUnit[iNumLength-i];
              bHasUnit:=True;
            end;   //end if not bHasUnit
          bZeroFlag:=True;
          if (arChinseUnit[iNumLength-i]='元') then
            bZeroFlag:=False;
        end;//end k=0  end;//end for  //处理小数部分的最后一位
      k:=StrToInt(Copy(sNumber,iNumLength,1));
      if k=0 then
        if Copy(Result,Length(Result)-1,2)='元' then
          Result:=Result+'整'
        else
          Result:=Copy(Result,1,Length(Result)-2)+'整';  if ((Length(sNumber)=3) and (StrToInt(sNumber)<100)) then
        Result:=Copy(Result,3,Length(Result)-2);  if ((Length(sNumber)=3) and (StrToInt(sNumber)<10)) then
        Result:=Copy(Result,3,Length(Result)-2);
      if Number<0 then
        Result:='币:负'+Result
      else
        Result:='币:'+Result;
    end;
      

  11.   

    自己写函数,XX.XX*100对应的转换,然后在对应的描述。
      

  12.   

    现在结帖!感谢各位的参与!所有的代码都已经copy了!