Проверка наличия массива в памяти

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
МоКом
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 21
Зарегистрирован: 08.06.2005 (Ср) 11:18
Откуда: Москва

Проверка наличия массива в памяти

Сообщение МоКом » 08.06.2005 (Ср) 11:19

Люди – как узнать, существует ли массив в памяти или нет.

В одной процедуре я объявляю публичный массив array_dir и заполняю его. В другой процедуре я использую этот массив. В этой второй процедуре, для подстраховки, я хотел бы проверить существует ли массив или нет. Как это сделать?

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 08.06.2005 (Ср) 11:46

Кхе-кхе...
А почему тогда "для подстраховки" не проверить наличие в компьютере платы памяти, процессора, а также - заодним - наличие мозгов у пользователя?

Дурацкий вопрос. Честно. По крайней мере, в той формулировке, в которой он сейчас задан.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.06.2005 (Ср) 12:02

Видимо, человек спрашивает, как проверить, были ли присвоены размерности диманическому массиву.
Ответ на этот вопрос дан очень давно, искать "SAFEARRAY Tricks".
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

a_mayor
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 02.06.2005 (Чт) 21:44

Сообщение a_mayor » 08.06.2005 (Ср) 12:03

Код: Выделить всё

    On Error Resume Next 'disable error object
    MsgBox UBound(array_dir)
    If Err = 9 Then
         MsgBox "Array is empty"
    ElseIf Err > 0 Then
         MsgBox Err.Description
    End If
    On Error GoTo 0 'reset error object

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 08.06.2005 (Ср) 12:08

Да не похоже... Если в первой процедуре он его уже заполнил...
Есть нехорошее впечатление, что человек просто ничего не знает про время жизни объектов...

a_mayor
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 02.06.2005 (Чт) 21:44

Сообщение a_mayor » 08.06.2005 (Ср) 12:11

uhm писал(а):Да не похоже... Если в первой процедуре он его уже заполнил...
Есть нехорошее впечатление, что человек просто ничего не знает про время жизни объектов...


А если массив глобальный...

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: Проверка наличия массива в памяти

Сообщение codemaster » 08.06.2005 (Ср) 12:16

МоКом писал(а):Люди – как узнать, существует ли массив в памяти или нет.

В одной процедуре я объявляю публичный массив array_dir и заполняю его.


чтение - увлекательное занятие
:lol: :lol:
//<-
Mit freundlichen Grüßen
//->

a_mayor
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 02.06.2005 (Чт) 21:44

Re: Проверка наличия массива в памяти

Сообщение a_mayor » 08.06.2005 (Ср) 12:20

codemaster писал(а):
МоКом писал(а):Люди – как узнать, существует ли массив в памяти или нет.

В одной процедуре я объявляю публичный массив array_dir и заполняю его.


чтение - увлекательное занятие
:lol: :lol:

Не только увлекательное, но и полезное... :shock:

МоКом
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 21
Зарегистрирован: 08.06.2005 (Ср) 11:18
Откуда: Москва

Сообщение МоКом » 08.06.2005 (Ср) 13:44

Массив действительно глобальный. Он объявляется и заполняется в процедуре номер №1, а используется во многих процедурах. Однако условие задачи таково, что процедура №1 может и не будь выполнена. Соответственно массив может и не быть создан. Во избежание ошибки, в процедурах, использующих массив, необходимо проверить – а существует ли такой массив? Таковы условия.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.06.2005 (Ср) 13:47

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 09.06.2005 (Чт) 1:25

А если создать булевскую переменную, которая будет свидетельствовать о созданности массива.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.06.2005 (Чт) 1:55

Она уже создана самим массивом.
Изображение

МоКом
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 21
Зарегистрирован: 08.06.2005 (Ср) 11:18
Откуда: Москва

Сообщение МоКом » 09.06.2005 (Чт) 10:58

Все, работает - благодарю всех за советы, особенно a_mayor за образец кода.

Может быть посоветуете, что делать в этой ситуации:
http://bbs.vbstreets.ru/viewtopic.php?t=16941


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 179

    TopList