作者A1pha ([αλφα])
看板Visual_Basic
标题[VB6 ] 宣告 我还是没搞清楚 囧
时间Mon Dec 22 19:56:15 2008
话说,
最近把一年多前写的程式拿出来翻修,
结果不知道怎麽搞的,
以前没问题的地方出了问题了@@"
就是执行到某的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
1F:推 fumizuki:没有接As 一律为Variant型态 写在同一行也一样 12/22 21:14
2F:→ A1pha:是喔QQ 我常看到书上写 Dim x, y as Integer大概那书在写 12/22 21:23
3F:→ A1pha:的时候没有写的很严谨== 谢谢大大XDDDD 12/22 21:23
4F:→ A1pha:现在回想,我那程式之前居然跑得动运气真的太好了QQ 12/22 21:25
5F:→ MOONRAKER:这是一个很常见的谬误, 可能来自其他语言的习惯, 如C等 12/23 16:57
6F:→ MOONRAKER:到.NET才把这种多个变数宣告为同一type的写法制式化 12/23 16:58
7F:→ A1pha:嗯嗯QQ 我的确有学过C~常常会两个搞混@@" 01/17 10:37