投稿日 | : 2004/10/28(Thu) 12:07 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: ユーザー定義型配列のErase |
ちなみに、SafeArrayAllocDescriptor APIを使うと、
LBound/UBoundしてもエラーにならない「空の配列」を作れたりします。
(Eraseされてしまえば、やはりLBoundでエラーになってしまいますけれどね)
> この変数をEraseしてあるかどうかを判断したいときはどうすればよいのでしょうか?
一応、APIで判定する方法もありますが…エラートラップするのが簡単かと思います。
Option Explicit
Private Type MyUserDefinedType
X As Long
End Type
Private Declare Sub RtlMoveMemory Lib "kernel32" _
(ByRef Destination As Long, _
ByRef Source() As MyUserDefinedType, _
Optional ByVal Length As Long = 4&)
Private Sub Form_Load()
Dim UDT() As MyUserDefinedType
Dim L As Long
RtlMoveMemory L, UDT
Debug.Print IIf(L = 0, "初期化前", "初期化済")
ReDim UDT(2)
RtlMoveMemory L, UDT
Debug.Print IIf(L = 0, "初期化前", "初期化済")
Erase UDT
RtlMoveMemory L, UDT
Debug.Print IIf(L = 0, "初期化前", "初期化済")
End Sub