Страница: 1 |
Страница: 1 |
Вопрос: ПУст ли массив.
Добавлено: 10.03.07 20:16
Автор вопроса: Ratu.R
myArr = Array(1)
mYs = Filter(myArr, 2, , vbTextCompare)
если выполнить mYs(0) то естественно сразу выскочит ошибка. Как проверить, что mYs пуст?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
-=Fenix=-
Вопросов: 33
Ответов: 81
Профиль | | #1
Добавлено: 10.03.07 20:59
IsArray(массив)
Номер ответа: 2
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #2
Добавлено: 10.03.07 21:03
Debug.Print UBound(mYs, 1) '-1
Номер ответа: 3
Автор ответа:
Ratu.R
Вопросов: 8
Ответов: 19
Профиль | | #3
Добавлено: 10.03.07 21:47
To Fenix: и что ты предлагаешь? Естественно mYs будет массивом, только пустым.
To EUGY: а оно всегда работает? Т.е. если он пуст, то значение будет -1, а если полон, то будет принимать иное значение?
Номер ответа: 4
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #4
Добавлено: 10.03.07 23:32
To Fenix: исключительно для динамических массивов
To EUGY: А если динамический пустой, то пошлет вас на 3 ... 4 стороны
To Ratu.R: Используй оба способа + проверка на ошибки
Номер ответа: 5
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #5
Добавлено: 11.03.07 17:10
To Ratu.R:
в данном случае - работает всегда.
ф-ция Filter всегда возвращает Zero-bazed массив (даже пустой).
Номер ответа: 6
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #6
Добавлено: 11.03.07 19:26
EUGY, массив не может быть одновременно Zero-bazed и пустым. И в VB6 Ubound не вернёт -1 для пустого массива. Не путай с .net.
Номер ответа: 7
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #7
Добавлено: 11.03.07 19:59
я не чего и не путаю.
myArr = Array(1)
mYs = Filter(myArr, 2, , vbTextCompare)
я предположил, что в этом отрывке
объявлены myArr и mYs as Variant,
потом сверился с MSDN
Filter Function
Returns a zero-based array containing subset of a string array based on a specified filter criteria.
Remarks
If no matches of match are found within sourcearray, Filter returns an empty array. An error occurs if sourcearray is Null or is not a one-dimensional array.
The array returned by the Filter function contains only enough elements to contain the number of matched items.
итак, если только сам myArr не пустой, то
след. код рабочий
Dim myArr As Variant
Dim mYs As Variant
myArr = Array(1, 3, 4, 5)
mYs = Filter(myArr, 2, , vbTextCompare)
Debug.Print IIf(UBound(mYs) < 0, "", "не" & "пусто"