VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -