[VB6 ] 宣告 我還是沒搞清楚 囧

看板Visual_Basic作者 ([αλφα])時間17年前 (2008/12/22 19:56), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
話說, 最近把一年多前寫的程式拿出來翻修, 結果不知道怎麼搞的, 以前沒問題的地方出了問題了@@" 就是執行到某的FUNCTION的時候,會出現ByRef引數型態不符。 於是我重新查了一下變數型態, 發現奇怪的問題@@" 我原本在 一般區 宣告 這裡宣告的變數, 用「區域變數監視視窗」來看,都變成Variant/XXXX這樣== *** 補:剛剛發現,我變數會變成Variant/XXXX的,都是在宣告非最末端的變數 例如下面例子中,我這樣宣告的時候, 用「區域變數監視視窗」來看,AnotherBianSu, criFix是Variant/XXXX 而SomethingElse是Single.... 但是我有加強制宣告,為什麼Compile時會讓我過?== 應該說,明明就有宣告,而且也讓我過了,為什麼變數還是Viriant/XXXX...? 不知道是我這次修改程式的時候動到什麼東西了還是怎樣~ 一年前寫的時候沒這問題@@" -- 我的例子是這樣: 我在一般宣告區: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Option Explicit Private AnotherBianSu, criFix, SomethingElse as single <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 然後寫了個Function: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Function Dice(Dice_type as string, option Fix_cri as single=0) as single Select case Dice_type case "a" Dice=5*Fix_cri+1 執行後這裡會被標起來說ByRef引數型態不符 '這時候監看變數的結果Fix_cri是Variant/Double,可能是錯在這。我引的是SINGLE case "b" Dice=10*Fix_cri+2 End select End Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 然後有個程序要呼叫他: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Private Sub Command1_Click() Dim X as single If !%$@#^ then criFix = -0.05 Else criFix = 0 End If X = Dice("a", criFix) '第一個引數A 或 B都一樣 End Sub <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -- 與其去懊悔做不到的事, 倒不如去做能做的事。 就算它和結果無關, 還是能夠往前邁進。 http://www.wretch.cc/blog/AlphaWing/24383501 From xxxHoLic vol.9 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.9.136.123

12/22 21:14, , 1F
沒有接As 一律為Variant型態 寫在同一行也一樣
12/22 21:14, 1F

12/22 21:23, , 2F
是喔QQ 我常看到書上寫 Dim x, y as Integer大概那書在寫
12/22 21:23, 2F

12/22 21:23, , 3F
的時候沒有寫的很嚴謹== 謝謝大大XDDDD
12/22 21:23, 3F

12/22 21:25, , 4F
現在回想,我那程式之前居然跑得動運氣真的太好了QQ
12/22 21:25, 4F

12/23 16:57, , 5F
這是一個很常見的謬誤, 可能來自其他語言的習慣, 如C等
12/23 16:57, 5F

12/23 16:58, , 6F
到.NET才把這種多個變數宣告為同一type的寫法制式化
12/23 16:58, 6F

01/17 10:37, , 7F
嗯嗯QQ 我的確有學過C~常常會兩個搞混@@"
01/17 10:37, 7F
文章代碼(AID): #19Ju1XAe (Visual_Basic)