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

這個好像是 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 目前離線  
送花文章: 2072, 收花文章: 8094 篇, 收花: 26956 次
回覆時引用此帖