我正在阅读包含机械紧固件数据的文本文件。我使用以下属性构建了一个对象紧固件(通过类):
Cfastener as collection
我想填写一系列紧固件:
currentfastener as fastener
initfastener as fastener
with initfastener
.type = "-1"
.number = -1
.master = -1
.slave = -1
end with
在文本文件中,类型,编号,主服务器和从服务器可以按随机顺序出现,但并不总是存在。为了解决这个问题,我定义了一个当前的紧固件(一种缓冲区)和一个默认的"空的"紧固件:
current fastener
我读取了我的文本文件,当我检测到引用其中一个属性的关键字时,我会测试Do until .atendofstream
line = .readline
Select case line
Case masterkeyword
if currentfastener.master <> -1 then 'We already have a master. This means that we need to save the currentfastener and start a new one.
Cfasteners.add currentfastener
currentfastener = initfastener
else 'master is "empty": we fill the currentfastener.
currentfastener.master= "value read from the text stream"
end if
End Select
Loop
中的值:
-1
到目前为止,我使用"-1"
表示数字,-1
表示字符串作为默认空参数。到目前为止它很好,因为参数无法获得这个值。但现在,我想为主服务器和从服务器添加空间位置,它可以是initfixation
。所以我想回到我的第一个想法,即将所有empty
参数定义为0
。
但如果我没有弄错,则无法区分empty
值与vba中的{{1}}值,这会造成麻烦。
您是否知道一个默认值,即非0,可以区别于0而不是-1?
答案 0 :(得分:1)
声明所有这些变体。
type as string
number as long
master as long
slave as long
声明后的默认值为vbEmpty。
您可以测试此
Dim av As Variant
If IsEmpty(av) Then Debug.Print "if isempty(av ) "
' I Wouldn't use this (it works but is overkill)
' If VarType(av) = vbEmpty Then Debug.Print "If VarType(av)= vbEmpty "
您可以明确指定Empty,例如
av = Empty
VB会将Empty转换为0进行数值比较。