请问如果如何删除数组中的相同元素
比如 经过前面的计算 得倒 数组 a() 里边有些相同的元素 如果和重复的元素去掉 比如(1,2,2,3,3,4)去掉成变成(1,2,3,4)并且放入数组b() 并且把去掉的的元素放入 另外的 数组 c()中去
然后把得到的数组b()和 一个固定的数组d()比较, d()数组是固定的, 由本人先定义好 b()里边和d()相同则把d()删除 由本人输入进去,b()数组是d数组的子集
也就是 假如 计算后数组b()是(1,2,3,4) 而d()是(1,2,3,4,5,6,7,8,9) 得到的是数组d()是(5,6,7,8,9)
麻烦大家帮我写下好吗
[解决办法]
很容易。但似乎没有必要变更 a(),因为结果在 b() 中。
在窗体上放一个 ListBox,可以是不可见的。
Private Declare Function SendMessagebyString Lib _"user32" Alias "SendMessageA" (ByVal hWND As Long, _ByVal wMsg As Long, ByVal wParam As Long, _ByVal lParam As String) As LongPrivate Const LB_FINDSTRINGEXACT = &H1A2 '在 ListBox 中精确查找Dim i As Long, j As Long, tmp() As Integerj = LBound(c)List1.ClearFor i = LBound(a) To Ubound(a) If SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1 , CStr(a(i))) = -1 Then List1.AddItem a(i) Else c(j) = a(i) j = j + 1 EndNext iFor i = 0 To List1.ListCount - 1 b(LBound(b) + i) = List1.List(i)Next iRedim tmp(LBound(d) To UBound(d))For i = LBound(d) To UBound(d) tmp(i) = d(i)Next ij = LBound(d)For i = LBound(tmp) To UBound(tmp) If SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1 , CStr(a(i))) > -1 Then d(j) = tmp(i) j = j + 1 End IfNext iRedim Preserve d(j - 1)