Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как обнулить массив? 
:(
    Опции темы
JUmPER
Дата 28.9.2006, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



как сделать массив несодержащим элементы?
при option base это просто ReDim myarray(0)
а без него?
я ему и null, и nothing пробовал присвоить -- не хочет работать...


похожая проблема:
Код

Dim a() as Long
...

как потом проверить, что массив пуст?
(в окне Locals значения вообще нет, т.е ячеёка пуста)
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
Akina
Дата 28.9.2006, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



При option base 0 это просто ReDim myarray(0)
При option base 1 это просто ReDim myarray(1)
При отсутствии option base 0 это просто ReDim myarray(0)



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
JUmPER
Дата 28.9.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



вообще без option base
redim myarray(0)
делает массив из одного элемента (с индексом "0")

этот код работает без ошибок и caption меняется...
Код

Option Base 0

Private Sub Form_Load()
    Dim a() As Long
    ReDim a(0)
    a(0) = 10
    Caption = Str(a(0))
End Sub

--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
~FoX~
Дата 28.9.2006, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 10
Всего: 68



JUmPER, Бэйсик не позволяет работать с неинициализированными массивами. Этоже не объект в конце концов. Да и вообще я слабо представяю кто позволяет.

Цитата(JUmPER @  28.9.2006,  14:45 Найти цитируемый пост)
(в окне Locals значения вообще нет, т.е ячеёка пуста) 

Кстати она тоже не пуста,  в выделеной под массив области памяти лежит всякая фигня, дальше компилер заменяет все значения в во всех элиментах на дефолтные - если числовой, то нулями, если строковой то нультерминейтед стринг и т.д. И получаем мы проиниченый массив, готовый для работы.

А если не секрет, зачем тебе это?

Это сообщение отредактировал(а) ~FoX~ - 28.9.2006, 14:55


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
JUmPER
Дата 28.9.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



например:
Код

public function some_function() as long()
    dim a() as long
   'далее возможно добавляем в массив элементы, делая перед этим redim
   some_function=a
end function

redim может не выполниться не разу, что и даёт в результать неинициализированный массив
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
Akina
Дата 28.9.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Слушай, у тебя какая-то ахинея получается... давай-ка поподробнее, чего ты там ворочаешь с этим массивом.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
JUmPER
Дата 28.9.2006, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



массив определятся вверху функции (dim a() as long)
потом в него возможно добаляются элементы (перед добавлением используется redim)
потом этот массив (определённый, но, возможно, не инициализированный) возвращается как результат функции
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 28.9.2006, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Значит я понимаю так.

Если ты единожды сделал какой-либо REDIM массиву, то он уже НИКОГДА (!!!!) не сможет стать массивом без элементов.
Это ограничение транслятора.
И если ты хочешь, чтобы программа знала какой массив возвращается функцией ("с элементами" или "без элементов"), то тебе надо завсети глобальную булевскую переменную и уже анализировать её содержимое.

False - массив пуст. Даже лазать в него не стоит
True - массив не пуст, будем его обрабатывать...

По-другому решений не вижу.

Добавлено @ 16:04 
Кроме того!!!

Можно определить инициализирован массив или нет следующей фишкой.

Пытаешься сначала определить размер массива функцией UBound.

Если произошла ошибка, то массив не инициализирован.
Если ошибки не произошло, то производился REDIM


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 28.9.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



спасибо
примерно так и сделал
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.