Страница: 1 | 2 |
Вопрос: Помогите плиз с переменными
Добавлено: 22.12.08 17:10
Автор вопроса: Kirill | Web-сайт:
Всем привет. У меня следующий вопрос. Я пишу в VB6 Мне нужно в процедуре создать 2 глобальных переменных, которые можно использовать в другой процедуре другого модуля. т.е. сейчас на примере:
Это один модуль:
Public Sub HaHa()
'Вот здесь мне нужно объявить 2 переменных.
'Если я их пишу так:
Public a, b as Integer
'то мне выдаёт ошибку что нельзя так делать.
Здесь идёт всякий код с использованием этих переменных
Здесь ссылка на другую процедуру другого модуля,
В котором мне нужно использовать значения верхних переменных.
End Sub
Я думаю в целом понятно :) Подскажи плиз как объявить глобальные переменные в самой процедуре а не в самом верху модуля? Мне это нужно для того, чтобы эти переменные загрузились в память, и при завершении процедуры выгрузились, не занимая память. Проект большой а процеду используется раз в месяц.
Заранее спасибо
Ответы
Всего ответов: 19
Номер ответа: 1
Автор ответа:
Kardinal
ICQ: 360041513
Вопросов: 1
Ответов: 164
Web-сайт:
Профиль | | #1
Добавлено: 22.12.08 17:33
Может проще передавать переменные в другой саб
Номер ответа: 2
Автор ответа:
Kirill
Вопросов: 3
Ответов: 16
Web-сайт:
Профиль | | #2
Добавлено: 22.12.08 17:47
А что значит передать в другой саб? Можно подробнее? Я с таким не сталкивался.... Сам смысл понятен, а как это сделать?
Номер ответа: 3
Автор ответа:
Isage.ru
Вопросов: 3
Ответов: 38
Профиль | | #3
Добавлено: 22.12.08 18:23
глобальные переменные нельзя объявлять внутри функций и процедур.
Их надо объявлять в самом начале модуля (только модуль)
Public a, b As Integer
Public Sub HaHa()
End Sub
для удобства работы
при использовании глобальных переменных используй имя модуля+символ"."+имя переменной
Пример:
'Если имя модуля Modul(Modul.bas)
Modul.a
Номер ответа: 4
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #4
Добавлено: 22.12.08 20:23
поверь, этим ты не сделаешь никакой серьезной оптимизации. во первых, глобальные переменные лежат в секциях исполняемого файла, это раз (хотя бывают исключения, например строки). Во вторых размер переменных измеряется в байтах. Целочисленные перменные. Что это даст? Ну и в третьих - виндос юзает кеширование памяти на основе рабочих пространств, и если переменная не используется, страница памяти с ней скинется в своп и не будет занимать ОП. Так что не грузи себе моск. На этом выйграть не получится
Номер ответа: 5
Автор ответа:
Александр
ICQ: 414713812
Вопросов: 16
Ответов: 49
Профиль | | #5
Добавлено: 22.12.08 20:49
и ещё) если ты так объявляешь Public a, b As Integer, то a у тебя будет типа Variant, а b Integer
Номер ответа: 6
Автор ответа:
Kirill
Вопросов: 3
Ответов: 16
Web-сайт:
Профиль | | #6
Добавлено: 22.12.08 22:39
Как это делается??? Объясни пожалуйста
Номер ответа: 7
Автор ответа:
Kirill
Вопросов: 3
Ответов: 16
Web-сайт:
Профиль | | #7
Добавлено: 22.12.08 22:42
ООО. Большое всем спасибо!!! И всё таки объясните плиз что значит передать переменную в другой саб (первый пост)
Номер ответа: 8
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #8
Добавлено: 23.12.08 01:38
переменные можно передавать в процедуры по ссылке (byref, если ничего не написано, то тоже byref) или по значению (byval).
'gy' передаётся по ссылке, поэтому мы можем в функции 'b' узнать ее значение и изменить его.
Соответственно в функции 'a' оно тоже изменится. Ну а 'by' передается по значению, в 'b' не получится изменить содержимое 'by'
Номер ответа: 9
Автор ответа:
Kirill
Вопросов: 3
Ответов: 16
Web-сайт:
Профиль | | #9
Добавлено: 23.12.08 08:21
Ага. всем большое спасибо
Номер ответа: 10
Автор ответа:
Isage.ru
Вопросов: 3
Ответов: 38
Профиль | | #10
Добавлено: 23.12.08 12:33
Ra$cal
Winand
Изучите ассемблер а потом советуйте людям.
Вы не знаете устройство ПК и осуждаете других.
Каждый человек это дурак, но кто-то исправляется а, кто-то нет.
Ваш вердикт "НЕТ"!
Номер ответа: 11
Автор ответа:
Kirill
Вопросов: 3
Ответов: 16
Web-сайт:
Профиль | | #11
Добавлено: 23.12.08 12:50
Isage.ru
А что ты имеешь ввиду??
Номер ответа: 12
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #12
Добавлено: 23.12.08 16:45
мхххх. Исаг отжог. Во первых - не путай алгоритмы работы системы с ассемблером. Он как ваще как бе ну совсем уж не в те ворота. Во вторых - ассемблер я знаю весьма хорошо В третьих - еще мы страдали курсами ОС, Организации ЭВМ, и прочей лабудой, поэтому знаем, о чем говорим. Опровергни мои пост в самом верху, иначе это обычный троллинг.
Номер ответа: 13
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #13
Добавлено: 23.12.08 17:03
по теме - никаких паблик переменных в сабе, разумеется, быть не может, а вот статик - вполне...
Номер ответа: 14
Автор ответа:
Kirill
Вопросов: 3
Ответов: 16
Web-сайт:
Профиль | | #14
Добавлено: 23.12.08 21:08
Я смотрю здесь уже оффтоп пошёл. в Принципе всем спасибо, я разобрался.
Номер ответа: 15
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #15
Добавлено: 23.12.08 23:51
ОМГ) Я попытался рассказать как смог, что значит передавать переменные в другую функцию
А меня обвинили в незнании ассемблера и некоем осуждении кого-то. Извините, но это не справедливо как наш универский философ Мурманцев! И вообще я наблюдаю пробел в логике.