Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Помогите плиз с переменными Добавлено: 22.12.08 17:10  

Автор вопроса:  Kirill | Web-сайт: kiem.my1.ru
Всем привет. У меня следующий вопрос. Я пишу в VB6 Мне нужно в процедуре создать 2 глобальных переменных, которые можно использовать в другой процедуре другого модуля. т.е. сейчас на примере:

Это один модуль:
Public Sub HaHa()
'Вот здесь мне нужно объявить 2 переменных.
'Если я их пишу так:
Public a, b as Integer
'то мне выдаёт ошибку что нельзя так делать.

Здесь идёт всякий код с использованием этих переменных
Здесь ссылка на другую процедуру другого модуля,
В котором мне нужно использовать значения верхних переменных.
End Sub

Я думаю в целом понятно :) Подскажи плиз как объявить глобальные переменные в самой процедуре а не в самом верху модуля? Мне это нужно для того, чтобы эти переменные загрузились в память, и при завершении процедуры выгрузились, не занимая память. Проект большой а процеду используется раз в месяц.
Заранее спасибо

Ответить

  Ответы Всего ответов: 19  

Номер ответа: 1
Автор ответа:
 Kardinal



ICQ: 360041513 

Вопросов: 1
Ответов: 164
 Web-сайт: kg7.ru
 Профиль | | #1
Добавлено: 22.12.08 17:33
Может проще передавать переменные в другой саб

Ответить

Номер ответа: 2
Автор ответа:
 Kirill



Вопросов: 3
Ответов: 16
 Web-сайт: kiem.my1.ru
 Профиль | | #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-сайт: www.rascalspb.narod.ru
 Профиль | | #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-сайт: kiem.my1.ru
 Профиль | | #6
Добавлено: 22.12.08 22:39
Как это делается??? Объясни пожалуйста

Ответить

Номер ответа: 7
Автор ответа:
 Kirill



Вопросов: 3
Ответов: 16
 Web-сайт: kiem.my1.ru
 Профиль | | #7
Добавлено: 22.12.08 22:42
ООО. Большое всем спасибо!!! И всё таки объясните плиз что значит передать переменную в другой саб (первый пост)

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 23.12.08 01:38
  1. Sub a()
  2.    dim gy as string, by as string
  3.    call b(gy, b)
  4. end sub
  5.  
  6. Sub b(byref str1 as string, byval str2 as string)
  7.    str1="111"
  8.    msgbox str2
  9. end sub


переменные можно передавать в процедуры по ссылке (byref, если ничего не написано, то тоже byref) или по значению (byval).
'gy' передаётся по ссылке, поэтому мы можем в функции 'b' узнать ее значение и изменить его.
Соответственно в функции 'a' оно тоже изменится. Ну а 'by' передается по значению, в 'b' не получится изменить содержимое 'by'

Ответить

Номер ответа: 9
Автор ответа:
 Kirill



Вопросов: 3
Ответов: 16
 Web-сайт: kiem.my1.ru
 Профиль | | #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-сайт: kiem.my1.ru
 Профиль | | #11
Добавлено: 23.12.08 12:50
Isage.ru
А что ты имеешь ввиду??

Ответить

Номер ответа: 12
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #12
Добавлено: 23.12.08 16:45
мхххх. Исаг отжог. Во первых - не путай алгоритмы работы системы с ассемблером. Он как ваще как бе ну совсем уж не в те ворота. Во вторых - ассемблер я знаю весьма хорошо ;) В третьих - еще мы страдали курсами ОС, Организации ЭВМ, и прочей лабудой, поэтому знаем, о чем говорим. Опровергни мои пост в самом верху, иначе это обычный троллинг.

Ответить

Номер ответа: 13
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #13 Добавлено: 23.12.08 17:03
по теме - никаких паблик переменных в сабе, разумеется, быть не может, а вот статик - вполне...

Ответить

Номер ответа: 14
Автор ответа:
 Kirill



Вопросов: 3
Ответов: 16
 Web-сайт: kiem.my1.ru
 Профиль | | #14
Добавлено: 23.12.08 21:08
Я смотрю здесь уже оффтоп пошёл. в Принципе всем спасибо, я разобрался.

Ответить

Номер ответа: 15
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #15
Добавлено: 23.12.08 23:51
ОМГ=)) Я попытался рассказать как смог, что значит передавать переменные в другую функцию
А меня обвинили в незнании ассемблера и некоем осуждении кого-то. Извините, но это не справедливо как наш универский философ Мурманцев! И вообще я наблюдаю пробел в логике.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам