|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
王建貴
註冊時間: 2004-03-11 文章: 62
第 1 樓
|
發表於: 星期三 五月 26, 2004 12:30 pm 文章主題: 將星期幾轉換為中文顯示的問題? |
|
|
各位大大.我想將星期幾顯示為中文的格式如下:
'星期'+substrc('一二三四五六日',dow(date(),2),1)
結果並不正確.不知道問題出在哪裡?請各位大大幫小弟看看.謝謝! |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4225 來自: 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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
王建貴
註冊時間: 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 文章: 4225 來自: Taipei,Taiwan
第 5 樓
|
發表於: 星期三 五月 26, 2004 3:56 pm 文章主題: |
|
|
答案並不重要,關鍵在於思考
請您自己想看看哪邊有漏吧,
不過,VFP 是 case insensitive 的,
所以 num,NUM,Num,....都是一樣的,
變數,函式,欄位名稱通通都是一樣,
重複的函式名稱就可以作到那樣的結果
請您注意一下 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
lygcw9603
註冊時間: 2011-12-25 文章: 130
第 6 樓
|
發表於: 星期一 三月 18, 2024 8:27 pm 文章主題: |
|
|
VFP9測試版本7423
'星期'+substrc('一二三四五六日',dow(date(),2),1)
改為
'星期'+substrc('一二三四五六日',INT(dow(date(),2)),1)
結果就正確了,問題出在第二個參數dow()上
如果代碼如下,結果就正常了
'星期'+substrc('一二三四五六日',7,1)
結論:帶C的字符函數盡量不用 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|