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

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

----------------------------------------------------------------------------
No.4135 Re:ユーザ定義型の比較  投稿者:ゆう(U) [2002/03/20(水)18:23分]
----------------------------------------------------------------------------

「LSet ステートメント」ヘルプより
あるユーザー定義型から別のユーザー定義型に変数をコピーすると、
その領域の要素に対して指定されているデータ型に関係なく、一方の
変数のバイナリ データだけが他方のメモリ領域にコピーされます。

大きめに確保したユーザ定義型の残りの部分にゴミが入る
可能性はありませんか?
※同サイズにした方が良いと思います

改良コード)
Private Function StructComp2(a1 As Testdat, a2 As Testdat) As Boolean
Dim Struct1 As CompWk
Dim Struct2 As CompWk
Dim strTemp1 As String
Dim strTemp2 As String
Dim i As Long

  'ユーザー定義型(Testdat型)を別のユーザー定義型(CompWk型)にコピーする
  LSet Struct1 = a1
  LSet Struct2 = a2

  '有効部分を文字列型へ転記する
  'サイズが同じならLeftB、LenBは不要になります
  strTemp1 = LeftB$(Struct1.data, LenB(a1))
  strTemp2 = LeftB$(Struct2.data, LenB(a2))

  '比較
  If StrComp(strTemp1, strTemp2, vbBinaryCompare) = 0 Then
  '一致
    StructComp2 = True
  Else
  '不一致
    StructComp2 = False
  End If
End Function


可変長文字列の事もあるので、私は比較用のプロシージャを
作成してしまう事をお薦めします。

サンプル)
Private Type myType
  Item1 As Long
  Item2 As String
  Item3 As String * 5
End Type
Prvate Function myTypeComp(ByRef Type1 as myType, _
                           ByRef Type2 As myType) As Boolean
  myTypeComp = False
  If Type1.Item1 <> Type2.Item1 Then Exit Function
  If StrComp(Type1.Item2, Type2.Item2, vbBinaryCompare) <> 0 Then Exit Function
  If StrComp(Type1.Item3, Type2.Item3, vbBinaryCompare) <> 0 Then Exit Function
  myTypeComp = True
End Function




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