Страница: 1 | 2 | 3 |
Вопрос: обнуление массива
Добавлено: 26.06.12 18:20
Автор вопроса: merr
Люди Добрые!
Вновь нужда заставляет писать эти строки :)
Как обнулить массив в такой ситуации: процедура "Начальные условия": клик юзера - старт процедуры (установка нач. условий). Далее процедура "Начать":клик юзера - старт процедуры (заполнение массива). Далее он используется еще в нескольких процедурах. Вывод результатов. Все ОК, но если заново нажать на "Нач. условия" а потом "Начать", то результат будет уже некорректен - программа "помнит" предыдущее значение массива. Все обнуляется только с перезапуском программы...
Важно: массив объявлен глобально; массив статический, одномерный. Erase не помогает - "эффект памяти" остается. Это как-то решается?
Ответы
Всего ответов: 37
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 26.06.12 20:14
Использование глобальных переменных - плохая практика. От них надо отказываться ПОЛНОСТЬЮ!
Номер ответа: 2
Автор ответа:
merr
Вопросов: 11
Ответов: 31
Профиль | | #2
Добавлено: 26.06.12 20:31
Что-то мне подсказывает что EROS прав
Однако это трудно считать ответом на вопрос...
Номер ответа: 3
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #3
Добавлено: 26.06.12 23:34
Да чего тут отвечать.. переинициализируй переменную и всего делов..
к примеру:
=== ARRAY ===
5;9;1;7
=== ARRAY ===
7;3;6;2
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 26.06.12 23:36
Но, повторю еще раз, хорошей практикой считается давать переменным наименьшую зону видимости..
Номер ответа: 5
Автор ответа:
merr
Вопросов: 11
Ответов: 31
Профиль | | #5
Добавлено: 26.06.12 23:58
Ага...
Вообще я про VB... Но идею понял, спасибо!
Номер ответа: 6
Автор ответа:
Александр
Вопросов: 1
Ответов: 15
Профиль | | #6
Добавлено: 28.06.12 07:09
С какого перепугу?
Мотивируй и предложи выход.
Номер ответа: 7
Автор ответа:
Александр
Вопросов: 1
Ответов: 15
Профиль | | #7
Добавлено: 28.06.12 07:14
Нет такого эффекта - есть кривой код.
По крайней мере у меня Erase всегда работает.
Воложил бы код
Номер ответа: 8
Автор ответа:
merr
Вопросов: 11
Ответов: 31
Профиль | | #8
Добавлено: 28.06.12 17:56
Да, код, безусловно, кривой, зато свой, родной
Там большой кусок, не хочу засорять эфир...
1. Справедливо ли утверждение что статические массивы можно объявить только глобально, а динамические - только локально?
2. Хорошо, а в принципе если не глобальные динамические массивы объявлены в процедурах, тогда как в VB6 сделать чтоб значения одного в Процедуре 1 присваивались другому в Процедуре 2 (тип данных, количество и объемы размерностей совпадают)?
Номер ответа: 9
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #9
Добавлено: 29.06.12 01:29
1. Нет. Можно всё и везде.
2.
Номер ответа: 10
Автор ответа:
merr
Вопросов: 11
Ответов: 31
Профиль | | #10
Добавлено: 29.06.12 15:35
Winand, Спасибо!
Номер ответа: 11
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #11
Добавлено: 29.06.12 22:30
С какого перепугу?
Мотивируй и предложи выход.
Эммм.. я даже как-то растерялся. В абсолютно любой книге по программированию для чайников есть фраза типа : Глобальные переменные - зло! И приводится мотивация и предлагаются возможные варианты решения (начиная от шаблонов типа Singleton до других архитектурных изысковв зависимости от уровня материала)
Надеюсь, ты не заставишь меня гуглить по фразе: Глобальные переменные - зло и копипастить сюда цитаты, а сделаешь это самостоятельно.
Номер ответа: 12
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #12
Добавлено: 30.06.12 00:12
принимать вещи на веру без объяснений - зло. вот, взять хотя бы слоган "goto - зло": в ядре линукс и JavaVM используется часто для быстродействия!
Номер ответа: 13
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #13
Добавлено: 30.06.12 00:41
хммм
From: Linus Torvalds
Subject: Re: any chance of 2.6.0-test*?
Date: Sun, 12 Jan 2003 12:22:26 -0800 (PST)
On Sun, 12 Jan 2003, Rob Wilkens wrote:
>
> However, I have always been taught, and have always believed that
> "goto"s are inherently evil. They are the creators of spaghetti code
No, you've been brainwashed by CS people who thought that Niklaus Wirth
actually knew what he was talking about. He didn't. He doesn't have a
frigging clue.
Номер ответа: 14
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #14
Добавлено: 30.06.12 12:45
слоган "goto - зло": в ядре линукс и JavaVM используется часто для быстродействия!
тут необходимо разделить понятия: Осмысленное применение для какой-то конкретной цели и повсеместное и бездумное.
Вот второе применение (пусть и в силу незнания предметной области) и является злом.
Номер ответа: 15
Автор ответа:
merr
Вопросов: 11
Ответов: 31
Профиль | | #15
Добавлено: 30.06.12 16:24
Вот второе применение (пусть и в силу незнания предметной области) и является злом.
Согласен. Так ведь и с глобальными переменными та же история.