VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

求救!怎么把一个文本框中的数字金额(两位小数)转换成大写中文???

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
七音



註冊時間: 2006-05-03
文章: 13


第 1 樓

發表發表於: 星期三 五月 03, 2006 9:09 am    文章主題: 求救!怎么把一个文本框中的数字金额(两位小数)转换成大写中文??? 引言回覆

五一劳动节还在劳动的我,编程到后来脑细胞实在不够用了,希望有前辈帮帮忙,不胜感激! Shocked
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 2 樓

發表發表於: 星期三 五月 03, 2006 9:17 am    文章主題: 引言回覆

用 數字 大寫 去搜尋
找到 http://vfp.sunyear.com.tw/viewtopic.php?t=50

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
七音



註冊時間: 2006-05-03
文章: 13


第 3 樓

發表發表於: 星期三 五月 03, 2006 9:25 am    文章主題: 引言回覆

十分感激!我马上去调试调试。
回頂端
檢視會員個人資料 發送私人訊息
七音



註冊時間: 2006-05-03
文章: 13


第 4 樓

發表發表於: 星期三 五月 03, 2006 11:23 am    文章主題: 引言回覆

都不行啊,那里有三个源代码和一个下载的,下载的那个打开来是乱码,三段源代码中两段有语法错误,剩下的一段居然还需要调用gcPos2Chinese这个函数,可这函数在哪?
回頂端
檢視會員個人資料 發送私人訊息
七音



註冊時間: 2006-05-03
文章: 13


第 5 樓

發表發表於: 星期三 五月 03, 2006 11:38 am    文章主題: 我这么作的 引言回覆

为了测这个功能,我新建了一个项目,把以下代码存为F_StrConv.prg
FUNCTION F_StrConv
LPARAMETERS L_ncNumber
LOCAL W1_cNumber,W1_cStr1,W1_cStr2,W1_cStr3
LOCAL W1_nSUB_A,W1_n1Num,W1_cTranStr
IF TYPE("L_ncNumber") = "C"
L_ncNumber = VAL(CHRTRAN(L_ncNumber,",",""))
ENDIF
W1_cNumber = LTRIM(TRANSFORM(ABS(L_ncNumber),"9999999999999999999.99"))
STORE "零壹貳參肆伍陸柒捌玖" TO W1_cStr1
STORE "分角 元拾佰仟萬拾佰仟億拾佰仟兆拾佰仟" TO W1_cStr2
STORE "   元   萬   億   兆   " TO W1_cStr3
STORE SPACE(0) TO Lo_cNumber
FOR W1_nSUB_A = LEN(W1_cNumber) TO 1 STEP -1
W1_n1Num = VAL(SUBSTR(W1_cNumber,W1_nSUB_A,1)) && 要處理的位數之值
W1_cTranStr = IIF(W1_n1Num=0,W1_cStr3,W1_cStr2)  && 要換算的對應單位字串
Lo_cNumber=SUBSTR(W1_cStr1,W1_n1Num*2+1,2)+ ALLTRIM(SUBSTR(W1_cTranStr,(LEN(W1_cNumber)-W1_nSUB_A+1)*2-1,2)) + Lo_cNumber
ENDFOR
Lo_cNumber = Lo_cNumber + "整"
DO WHILE !EMPTY(AT("零零",Lo_cNumber))
Lo_cNumber = STRTRAN(Lo_cNumber,"零零","零")
ENDDO
Lo_cNumber = STRTRAN(Lo_cNumber,"零萬","萬")
Lo_cNumber = STRTRAN(Lo_cNumber,"零億","億")
Lo_cNumber = STRTRAN(Lo_cNumber,"零兆","兆")
Lo_cNumber = STRTRAN(Lo_cNumber,"零元","元")
Lo_cNumber = STRTRAN(Lo_cNumber,"元零","元")
Lo_cNumber = STRTRAN(Lo_cNumber,"零整","整")
RETURN Lo_cNumber

在form中我只建一个页面,页面中就两个文本框和一个按钮,text1用来存放输入的数字,text2用来显示转换后的大写中文,按钮实现转换,在按钮的click事件中我这么写:(num我在form1的load中定义了)
num=thisform.text1.value
set udfparms to reference
set procedure to F_StrConv.prg
thisform.text2.value=F_StrConv (num)

为什么测试的时候老是说找不到F_StrConv.prg呢?为了保险起见,我连安装目录以及程序目录都保存了F_StrConv.prg,我是菜鸟,请别笑,指点一下好不?
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 6 樓

發表發表於: 星期三 五月 03, 2006 12:31 pm    文章主題: 引言回覆

如果你要將 function f_strconv 存在一個prg 中,
請不要將prg的檔名也叫做 f_strconv
另一個方法是: 不要有 function f_strconv 這行命令.
這個程式中有兩行程式有問題.
W1_n1Num = VAL(SUBSTR(W1_cNumber,W1_nSUB_A,1)) && 要處理的位數之值
W1_cTranStr = IIF(W1_n1Num=0,W1_cStr3,W1_cStr2)  && 要換算的對應單位字串
是因為在 &&之前的那些空白看起來是空白,
但實際上不是空白,
將這些假空白刪掉即可.

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
七音



註冊時間: 2006-05-03
文章: 13


第 7 樓

發表發表於: 星期三 五月 03, 2006 3:01 pm    文章主題: 十分感谢,一点补充 引言回覆

十分感谢,现在我已经完成了这个模块,我把函数变量定义部分写在form的load中,然后其他部分直接写在按钮的click事件中,就成了。并且由于借鉴的源代码中有些不足导致出来的大写金额不完美:大写金额中会出现空档或连续的“零”,我作了些修整。修整的代码除了简体与繁体中文的一些更换外,主要体现在代码段后部的ENDDO 和RETURN Lo_cNumber之间:
ENDDO
Lo_cNumber = STRTRAN(Lo_cNumber,"零万","万")
Lo_cNumber = STRTRAN(Lo_cNumber,"零亿","亿")
Lo_cNumber = STRTRAN(Lo_cNumber,"零兆","兆")
Lo_cNumber = STRTRAN(Lo_cNumber,"圆零","圆")
Lo_cNumber = STRTRAN(Lo_cNumber,"零整","整")
Lo_cNumber = STRTRAN(Lo_cNumber,"零零","零")
Lo_cNumber = STRTRAN(Lo_cNumber,"  零 零 整","整")
Lo_cNumber = STRTRAN(Lo_cNumber,"零 整","整")
Lo_cNumber = STRTRAN(Lo_cNumber,"零 万","万")
Lo_cNumber = STRTRAN(Lo_cNumber,"零 零 万","万")
Lo_cNumber = STRTRAN(Lo_cNumber,"零 零 零 ","零")
Lo_cNumber = STRTRAN(Lo_cNumber,"圆 ","圆")
Lo_cNumber = STRTRAN(Lo_cNumber,"  零 零","整")
Lo_cNumber = STRTRAN(Lo_cNumber," 零 零 整","整")
Lo_cNumber = STRTRAN(Lo_cNumber,"零 ","零")
Lo_cNumber = STRTRAN(Lo_cNumber,"零零圆","圆")
Lo_cNumber = STRTRAN(Lo_cNumber,"圆零整","圆整")
Lo_cNumber = STRTRAN(Lo_cNumber,"零圆整","圆整")
RETURN Lo_cNumber
希望能对有需要的人有所帮助。
感谢源代码的作者,以及感谢garfield的指点。
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作