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

將星期幾轉換為中文顯示的問題?

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



註冊時間: 2004-03-11
文章: 62


第 1 樓

發表發表於: 星期三 五月 26, 2004 12:30 pm    文章主題: 將星期幾轉換為中文顯示的問題? 引言回覆

各位大大.我想將星期幾顯示為中文的格式如下:
'星期'+substrc('一二三四五六日',dow(date(),2),1)
結果並不正確.不知道問題出在哪裡?請各位大大幫小弟看看.謝謝!
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



註冊時間: 2003-05-16
文章: 4212
來自: Taipei,Taiwan

第 2 樓

發表發表於: 星期三 五月 26, 2004 1:30 pm    文章主題: 引言回覆

答案並不重要,關鍵在於思考

以 2004.05.26 測試 substrc('一二三四五六日',dow(date(),2),1)
將傳回 '二',
SUBSTRC() 有問題的話,不是前面的字串錯,就是起始位置錯,
dow(date(),2) 會傳回 3,
改為 2004.05.26 測試 dow(date(),2) 會傳回4,
星期三傳回3,星期四傳回4,
看起來似乎是對的

改以 2004.05.26 測試 substrc('日一二三四五六',dow(date(),2),1),
會傳回'一'
所以得到一個想法,
substrc('一二三四五六日',dow(date(),2),1)實際上是''傳回 第3個BYTE開始的一個中文字",
而不是預期中"第3個"中文字
所以應該是

'星期'+substrc('一二三四五六日',dow(date(),2)*2,1)

如果改成 substrc('一二三四五六日',dow(date(),2)*2,2)
則會傳回 '三四',
這就表示 處理DOUBLE BYTE的動作放在這裡,


換一下函式 substr('一二三四五六日',dow(date(),2)*2,2)
得到 'T',而不是'三',
發現應該起始位置為'奇數'
所以應該是

'星期'+substr('一二三四五六日',dow(date(),2)*2-1,2)

我在寫C/C++ 程式是得到一個結論,
易偵錯的程式比短的程式要好,
所以若用 DIMENSION 作一個陣列存取,或是用DO CASE / ENDCASE,
其實都極不容易出錯

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
王建貴



註冊時間: 2004-03-11
文章: 62


第 3 樓

發表發表於: 星期三 五月 26, 2004 3:25 pm    文章主題: 引言回覆

小弟之前也自定了一個函數如下:
FUNCTION Chdow
LPARAMETERS mdate
store DOW(mdate,2) to num
do case
case num =1 && 判斷本週第幾天
NUM = '星期一'
case num = 2
NUM ='星期二'
case num = 3
NUM ='星期三'
case num =4
NUM = '星期四'
case num =5
NUM = '星期五'
case num =6
NUM = '星期六'
case num =7
NUM ='星期日'
endcase
RETURN NUM
ENDFUNC

結果也發生一些怪現象列如NUM應傳回星期三.竟然傳回Wednesday,應傳回星期日竟然傳回Sunday.其他的都很正常.不曉得問題在哪.我是用vfp6.0難道是版本的問題ㄇ???
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
王建貴



註冊時間: 2004-03-11
文章: 62


第 4 樓

發表發表於: 星期三 五月 26, 2004 3:43 pm    文章主題: 引言回覆

謝謝syntech大哥的指導,小弟用
'星期'+substr('一二三四五六日',dow(date(),2)*2-1,2)
已解決問體.當初也想到substr(),字元擷取位置的問題.但疏忽了中文字是兩個位元.一直在那轉來轉去.總算解決了.謝謝.還望抽空幫小弟看一下上面那個問題.到底問題在哪?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



註冊時間: 2003-05-16
文章: 4212
來自: Taipei,Taiwan

第 5 樓

發表發表於: 星期三 五月 26, 2004 3:56 pm    文章主題: 引言回覆

答案並不重要,關鍵在於思考

請您自己想看看哪邊有漏吧,
不過,VFP 是 case insensitive 的,
所以 num,NUM,Num,....都是一樣的,
變數,函式,欄位名稱通通都是一樣,
重複的函式名稱就可以作到那樣的結果
請您注意一下

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
lygcw9603



註冊時間: 2011-12-25
文章: 127


第 6 樓

發表發表於: 星期一 三月 18, 2024 8:27 pm    文章主題: 引言回覆

VFP9測試版本7423

'星期'+substrc('一二三四五六日',dow(date(),2),1)
改為
'星期'+substrc('一二三四五六日',INT(dow(date(),2)),1)
結果就正確了,問題出在第二個參數dow()上

如果代碼如下,結果就正常了
'星期'+substrc('一二三四五六日',7,1)
結論:帶C的字符函數盡量不用
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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