查看單個文章
舊 2005-03-23, 03:27 PM   #11 (permalink)
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9664小時 | 升級還需:133小時級別:96 | 在線時長:9664小時 | 升級還需:133小時級別:96 | 在線時長:9664小時 | 升級還需:133小時級別:96 | 在線時長:9664小時 | 升級還需:133小時級別:96 | 在線時長:9664小時 | 升級還需:133小時級別:96 | 在線時長:9664小時 | 升級還需:133小時
註冊日期: 2002-12-07
文章: 13248
精華: 0
現金: 26239 金幣
資產: 3024049 金幣
預設

這個好像是 VB 的奇怪點
照理說
沒指定時是 Variant
這個類似變數
可任意接受/更換 變數型態

一開始時
Form_Load() 執行過一次 getMMdays
第二次要用就不行

我也說不上來
實際上要用
除錯方式監看 引數(變數)型態 的 變換才可知 VB是如何作業的

VB的 強迫轉換 與 C++的強迫轉換 還是有差異的

其實還可以做一些實驗來理解VB的編譯方式
比如
於 Form_Load()
重複執行兩次 nMdays = getMMdays

nMdays = getMMdays(CInt(nYear.Text), CInt(nMonth.Text))
nMdays = getMMdays(CInt(nYear.Text), CInt(nMonth.Text))
來證明是否為上述理論

如是
那又有另一個理論
是否執行第一次時
Function getMMdays(pnYear, pnMonth)
就會變成
Function getMMdays(pnYear as integer, pnMonth as integer)

Function getMMdays(pnYear as Variant, pnMonth as Variant)
以致於不能接受其他變數型態

對了
以自己的經驗
你可以用一個變數來間接傳值
這樣就可繼續用 Cint 方式
Private Sub Form_Load() '表格load
nYear.Text = Year(Now)
nMonth.Text = Month(Now)
dim x
dim y ' 要分開寫而不是 dim x,y 寫在一起
x=CInt(nYear.Text)
y=CInt(nMonth.Text)
nMdays = getMMdays(x,y)
mini 目前線上  
送花文章: 1999, 收花文章: 7956 篇, 收花: 26748 次
回覆時引用此帖