- 日時: 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
|