tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
ユーザ定義型の比較(VB6.0) ( No.0 )  [親スレッドへ]
日時: 2009/12/27 15:28
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[基本コード][][]                                             *
* キーワード:構造体,型変換,ユーザ定義型,,,                                    *
***********************************************************************************

--------------------------------------------------------------------------------
No.4132 RE:ユーザ定義型の比較   投稿者:NAO★ [2002/03/20(水)16:28分]
--------------------------------------------------------------------------------

すみません。再修正です。
IntegerやLongが使えると分かったので
比較用のユーザー定義型を固定長文字列からByte配列に変更しました。

Option Explicit

Private Type Testdat
    aaa1 As Integer
    aaa2 As Date
    aaa3 As String * 20
    aaa4(5) As String * 5 '配列でも大丈夫
    aaa5(5) As Byte
    aaa6 As Boolean
    aaa7 As Long
    aaa8 As Single
   'Err1 as String ←可変長なのでエラー
   'Err2 as Variant ←バリアント型はエラー
   'Err3 as Object ←オブジェクト型はエラー
End Type

'比較用ユーザー定義型
Private Type CompWk
    data(256) As Byte  '大きめに確保しておく
End Type

Private hoge(3) As Testdat

Private Function StructComp(a1 As Testdat, a2 As Testdat) As Boolean
Dim Struct1 As CompWk
Dim Struct2 As CompWk
Dim i As Long
    'ユーザー定義型(Testdat型)を別のユーザー定義型(CompWk型)にコピーする
    LSet Struct1 = a1
    LSet Struct2 = a2
    
    'バイト毎に比較
    For i = 0 To Len(Struct1) - 1
        If Struct1.data(i) <> Struct2.data(i) Then
            '不一致
            StructComp = False
            Exit Function
        End If
    Next
    '一致
    StructComp = True
End Function

Private Sub Command1_Click()
Dim i As Integer
    For i = 1 To 2
        If StructComp(hoge(0), hoge(i)) = True Then
            Debug.Print "テスト" & i & ":hoge(0) = hoge(" & CStr(i) & ")"
        Else
            Debug.Print "テスト" & i & ":hoge(0) <> hoge(" & CStr(i) & ")"
        End If
    Next
End Sub

Private Sub Form_Load()
Dim i As Integer
    hoge(0).aaa1 = 123
    hoge(0).aaa2 = CDate("2001/03/20")
    hoge(0).aaa3 = "TEST"
    hoge(0).aaa8 = 123.45
    hoge(1) = hoge(0)
    hoge(2) = hoge(0)
    hoge(2).aaa8 = 234.56
End Sub



 [スレッド一覧へ] [親スレッドへ]