  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		七音
 
 
  註冊時間: 2006-05-03 文章: 13
 
  第 1 樓
  | 
		
			
				 發表於: 星期三 五月 03, 2006 9:09 am    文章主題: 求救!怎么把一个文本框中的数字金额(两位小数)转换成大写中文??? | 
				     | 
			 
			
				
  | 
			 
			
				五一劳动节还在劳动的我,编程到后来脑细胞实在不够用了,希望有前辈帮帮忙,不胜感激!   | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 2 樓
  | 
		 | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		七音
 
 
  註冊時間: 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的指点。 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |