Ничего не соответствует типу VB6

Я попробовал все, но все дает мне несоответствие типов:

Type UserType
...
End Type

Dim SomeArray() As UserType
...
If SomeArray() Is Nothing Then <do smth>
If SomeArray() Is Empty Then <do smth>
If SomeArray Is Nothing Then <do smth>
If SomeArray Is Empty Then <do smth>

Я действительно хочу знать, когда в моем массиве пользовательского типа нет элементов! Потому что я не хочу использовать дополнительные переменные, если я могу использовать возможности VB6.

Я буду использовать

Erase SomeArray

когда его размер = 1 (UBound(SomeArray) = 1) и я хочу удалить последний элемент.

Что я делаю не так? XD

2 ответа

VB6 "Ничего" относится к объектам, а не к массивам VB6.

"Ubound (myarray)" или "Ubound - LBound" - это способ определения текущей длины массива в VB6.

К вашему сведению, использование Коллекции VB6 может быть намного лучше для вас.

Хех, я нашел способ решить эту проблему из VBForums "VB6 - Возврат / Обнаружение пустых массивов". B)

(L / UBound не работает с пустыми массивами - он возвращается за пределы индекса.;))

Так...

Private Declare Function ArrPtr Lib "msvbvm60" Alias "VarPtr" (Ptr() As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)

Public Function Peek(ByVal lPtr As Long) As Long
    Call CopyMemory(Peek, ByVal lPtr, 4)
End Function

Не забудьте объявить свои собственные переменные ДО определения этой подпрограммы! Или это вызовет некоторые странные ошибки (VB неожиданно заменил мою инструкцию Exit Sub на Exit Function!).

Тогда я использовал

    If Peek(ArrPtr(SomeArray)) = 0 Then
        MsgBox "Looks like empty array SomeArray() before ReDim ^_^"
    End If

а также

    Erase SomeArray

    If Peek(ArrPtr(SomeArray)) = 0 Then
        MsgBox "Looks like empty array SomeArray() after Erase ^_^"
    End If

и все работает отлично!

Не очень просто, но хорошо.

Спасибо всем, я выучу этот цепной список под названием Коллекция.

Особенно спасибо за VBForums, они действительно гики.

Другие вопросы по тегам