投稿時間: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
|