哪位可以将商品金额小写转换成大写。运行程序,在文本框中输入小写金额,单击【确定】按钮执行转换。

解决方案 »

  1.   

    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;
      

  2.   

    function NumberCn(mNumber: Real): WideString;
    const
      cPointCn: WideString =  '点十百千万十百千亿十百千';
      cNumberCn: WideString =  '零一二三四五六七八九';
    var
      I, L, P: Integer;
      S: string;
    begin
      Result := '';
      if mNumber = 0 then begin
        Result := cNumberCn[1];
        Exit;
      end;
      S := FloatToStr(mNumber);
      if Pos('.', S) <= 0 then S := S + '.';
      P := Pos('.', S);
      L := Length(S);
      for I := 1 to L do
        if P > I then
          Result := Result + cNumberCn[StrToInt(S[I]) + 1] + cPointCn[P - I]
        else if P = I then begin
          Result := StringReplace(Result, '零十零', '零', [rfReplaceAll]);
          Result := StringReplace(Result, '零百零', '零', [rfReplaceAll]);
          Result := StringReplace(Result, '零千零', '零', [rfReplaceAll]);
          Result := StringReplace(Result, '零十', '零', [rfReplaceAll]);
          Result := StringReplace(Result, '零百', '零', [rfReplaceAll]);
          Result := StringReplace(Result, '零千', '零', [rfReplaceAll]);
          Result := StringReplace(Result, '零万', '万', [rfReplaceAll]);
          Result := StringReplace(Result, '零亿', '亿', [rfReplaceAll]);
          Result := StringReplace(Result, '亿万', '亿', [rfReplaceAll]);
          Result := StringReplace(Result, '零点', '点', [rfReplaceAll]);
        end else if P < I then
          Result := Result + cNumberCn[StrToInt(S[I]) + 1];
      if Result[Length(Result)] = cPointCn[1] then
        Result := Copy(Result, 1, Length(Result) - 1);
      if Result[1] = cPointCn[1] then Result := cNumberCn[1] + Result;
      if (Length(Result) > 1) and (Result[2] = cPointCn[2]) and
        (Result[1] = cNumberCn[2]) then
        Delete(Result, 1, 1);
    end; { NumberCn }function MoneyCn(mMoney: Real): WideString;
    var
      P: Integer;
    begin
      if mMoney = 0 then begin
        Result := '无';
        Exit;
      end;
      Result := NumberCn(Round(mMoney * 100) / 100);
      Result := StringReplace(Result, '一', '壹', [rfReplaceAll]);
      Result := StringReplace(Result, '二', '贰', [rfReplaceAll]);
      Result := StringReplace(Result, '三', '叁', [rfReplaceAll]);
      Result := StringReplace(Result, '四', '肆', [rfReplaceAll]);
      Result := StringReplace(Result, '五', '伍', [rfReplaceAll]);
      Result := StringReplace(Result, '六', '陆', [rfReplaceAll]);
      Result := StringReplace(Result, '七', '柒', [rfReplaceAll]);
      Result := StringReplace(Result, '八', '捌', [rfReplaceAll]);
      Result := StringReplace(Result, '九', '玖', [rfReplaceAll]);
      Result := StringReplace(Result, '九', '玖', [rfReplaceAll]);
      Result := StringReplace(Result, '十', '拾', [rfReplaceAll]);
      Result := StringReplace(Result, '百', '佰', [rfReplaceAll]);
      Result := StringReplace(Result, '千', '仟', [rfReplaceAll]);
      P := Pos('点', Result);
      if P > 0 then begin
        Insert('分', Result, P + 3);
        Insert('角', Result, P + 2);
        Result := StringReplace(Result, '点', '圆', [rfReplaceAll]);
        Result := StringReplace(Result, '角分', '角', [rfReplaceAll]);
        Result := StringReplace(Result, '零分', '', [rfReplaceAll]);
        Result := StringReplace(Result, '零角', '', [rfReplaceAll]);
        Result := StringReplace(Result, '分角', '', [rfReplaceAll]);
        if Copy(Result, 1, 2) = '零圆' then
          Result := StringReplace(Result, '零圆', '', [rfReplaceAll]);
      end else Result := Result + '圆整';
      Result := '人民币' + Result;
    end; { MoneyCn }
      

  3.   

    上面的參數(real)怎麽用呀?
    edit1.text := NumberCn(edit);????不行?
      

  4.   

    edit1.text   :=   XxToDx(edit);????也不行? 
      

  5.   

    edit是什么?float为浮点类型,如果是字符串得先转换Edit1.Text := NumberCn(StrToFloatDef(Edit2.Text, 0));
      

  6.   

           ------------------         請各位看看         -----------------------
    const
      scale: array[0..17] of string=
    ('分' '角', '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '兆', '拾', '佰', '仟' );
      Base: array[0..9] of string=
    String[] Base = (零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');procedure TForm1.Button1Click(Sender: TObject);
    var
      Temp,Info : string;
      www ,i ,data ,num, x: Integer;
    begin
      Temp := Edit1.Text;
      Info := '';
      if (Pos('.',Edit1.text)) > 0 then
      begin
        www:=(Pos('.',Edit1.text));
        Temp := Copy(Edit1.Text,1,www-1) + Copy(Edit1.Text,www+1,Length(Edit1.Text)-www);  //能用公共 函數換了這句話嗎 ???   目的就是去掉字符串中的 "."
        for i:= length(temp) downto 1 do
        begin
          Data := StrToInt(Copy(Temp,Length(Temp)-i,1)); 
          Info := Info + Base[Data];
          num := length(Copy(Edit1.Text,www+1,Length(Edit1.Text)-www));//能用公共函數換了這句話嗎  
    目的就是取字符串中的 "."後面的字符 
          if num > 1 then   // 0.11111  點后超過1位就特殊處理一下  目的是去  array  位置不要搞亂了
           begin
            Info := Info + Scale[i-num+1]
          end
          else
          begin
            Info := Info + Scale[i]
          end;  
        end;
      end
      else
      begin
        x := Length(temp);
        for i:= x downto 1 do
        begin
          Data := StrToInt(Copy(Temp,Length(Temp)-i+1,1));
          Info := Info + Base[Data];
          Info := Info + Scale[i+1];
        end;
      end;
      Edit1.Text := Info;
    end;
    謝謝回帖 順便教我怎麽給你們加分   我都會 加分的