| 网站首页 | 新闻快报 | 软件教程 | 硬件教程 | 设计学院 | Q Q 专区 | 编程开发 | 网络安全 | 
您现在的位置: 浩扬网络 >> 编程开发 >> PB编程 >> 教程正文
在pb中用语音读金额
作者:不详 文章来源:安全中国 点击数: 更新时间:2006-8-4 23:26:18

      1、将金额转换成大写金额;
  2、根据大写金额依次朗读出来;
  为此,需要完成以下内容:
  1、分别录制各WAV文件:0,1,2,3,4,5,6,7,8,9,元,角,分,拾,佰,仟,万,亿,整
  2、在工程中声明两个External 函数(Windows的API函数),用于发声;
         Function boolean sndPlaySoundA (string SoundName, uint Flags) Library "WINMM.DLL"
         Function uint waveOutGetNumDevs () Library "WINMM.DLL"
  3、新建一函数用于在程序中调用发声:
         Function PlaySound(string as_filename,integer ai_option) returns integer

  该函数的代码如下:
        uint lui_numdevs
        lui_numdevs = WaveOutGetNumDevs()
        If lui_numdevs > 0 Then
     sndPlaySoundA(as_filename,ai_option)
        return 1
        Else
    return -1
        End If

  4、新建一函数用于将小写金额转换成大写金额:
        Function xx2dx(Decimal ls) returns string

  代码实现如下:
  string dx_sz,dx_dw,str_int,str_dec,dx_str,fu,a,b,b2,c,d,result
  long num_int,num_dec,len_int,i,a_int,pp

  dx_sz = "零壹贰叁肆伍陆柒捌玖"
  dx_dw = "万仟佰拾亿仟佰拾万仟佰拾元"

  /*处理小于零情况*/
  if ls<0 then
     ls = ls*(-1)
     fu = "负"
  else
       fu = ""
  end if

    /*取得整数及整数串*/
  dx_str = string(ls)
  if (ls>0) and (ls<1) then dx_str = "0"+dx_str
  pp = pos(dx_str,".")
  if pp>0 then
    str_int = mid(dx_str,1,pos(dx_str,".")-1)
  else
    str_int = dx_str
  end if
  num_int = long(str_int)

    /*取得小数及小数串*/
  if (ls>0) and (ls<1) then
    num_dec = ls * 100
  else
    num_dec = (ls - num_int) * 100
  end if
  str_dec = string(num_dec)
  len_int = len(str_int)
  dx_str = ""

    /*转换整整部分*/
  for i = 1 to len_int
      /*a为小写数字字符,b为对应的大写字符,c为对应大写单位,d为当前大写字符串的最后一个汉字*/
     a= mid(str_int,i,1)
     a_int = long(a)
     b = mid(dx_sz,(a_int*2)+1,2)
     c = mid(dx_dw,((13 - len_int +i - 1)*2+1),2)
     if dx_str<>"" then
       d=mid(dx_str,len(dx_str)-1,2)
     else
        d= ""
     end if

     if (b="零") and ((d="零") or (b=b2) or (c="元") or (c="万") or (c="亿")) then  b = ""
     if (a="0") and (c<>"元") and (c<>"万") and (c<>"亿") then c=""
     if ((c="元") or (c="万") or (c="亿")) and (d="零") and (a="0") then
        dx_str = mid(dx_str,1,len(dx_str)-2)
        d=mid(dx_str,len(dx_str)-1,2)
        if ((c="元") and (d="万")) or ((c="万") and (d="亿")) then c = ""
     end if
      dx_str = dx_str + b+ c
      b2 = b
  next

    /*处理金额小于1的情况*/
    if len(dx_str) <= 2 then dx_str= ""
    /*转换小数部分*/
    if (num_dec<10) and (ls>0) then
      a_int = long(str_dec)
      b = mid(dx_sz,(a_int*2+1),2)
      if num_dec = 0 then dx_str = dx_str + "整"
      if num_dec > 0 then dx_str = dx_str +"零"+b+"分"
    end if

【教程录入:残梦    责任编辑:残梦 】
发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
  • 上一篇教程:

  • 下一篇教程:
  • 网友评论:(评论内容只代表网友观点,与浩扬网络立场无关!)
    热门文章

    赞助商


    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 |