powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Что с глобальными переменными?
8 сообщений из 8, страница 1 из 1
Что с глобальными переменными?
    #33442792
Andrik77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
делаю так:
в области деклараций
Private DontChangeCurrent As Boolean

потом в процедуре a():
DontChangeCurrent = true
b()

т.е. вызываю b()

и в b() сравниваю:
if b = true then ...

и получаю false - чё за тв.мать? Это что за издевательство, причём и watch выдаёт в процедуре a() - true, а в процедуре b() - false
Я понимаю что это из за каких-то автоматических созданий переменных, но я же её глобально объявил. Как вообще можно работать с "языком" который сам чё-то творит, сам не зная что делает. Зачем он сам создаёт переменные если я их не декларировал?
...
Рейтинг: 0 / 0
Что с глобальными переменными?
    #33442796
Andrik77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ой в процедуре b() делаю так:
if DontChangeCurrent = true then ... - и фалсе
...
Рейтинг: 0 / 0
Что с глобальными переменными?
    #33443326
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо вверху модуля ставить
Код: plaintext
Option Explicit
И можно Require variable declaration поставить чтобы не писать каждый раз.
...
Рейтинг: 0 / 0
Что с глобальными переменными?
    #33443355
Andrik77Что с глобальными переменными?
Код: plaintext
Private DontChangeCurrent As Boolean

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

Если процедуры a() и b() в разных модулях, сделай так:

Код: plaintext
1.
2.
Option Explicit

Public DontChangeCurrent As Boolean
...
Рейтинг: 0 / 0
Что с глобальными переменными?
    #33443433
Andrik77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спавибо за ответы. Я всё это понимаю, и про модуль, и Option Explicit ставить пытался. Я вам задачу плохо расписал, злой был как чёрт.

значит дело было так:

Option Explicit

Private DontChangeCurrent As Boolean - я знаю что эта переменная видна только в этом модуле

я раньше написал a() и b() - немного всё не так
реально так:

Private Sub Form_Current()
Dim rs As DAO.Recordset

If DontProcessCurrent = True Then Exit Sub

... какие-то действия

end sub

вот процедура в этом же модуле для вызова из вне
Public Sub ListJobMoveToLast()
Dim rs As DAO.Recordset

DontProcessCurrent = True
Set rs = Me.Recordset
rs.MoveLast
DontProcessCurrent = false
...

end sub

конец модуля

и вот что я вижу в watch когда вывожу Me и DontProcessCurrent

в процедуре ListJobMoveToNew() - Me = Form1, а DontProcessCurrent = true
после выполнения rs.MoveLast - попадаем в процедуру Form_Current() и там Me = Form1/Form1, а DontProcessCurrent = false

и как это называется? Вонэ что новый экземпляр объекта Form1 сделало?
Или я чего-то не догоняю, или лыжи у мелкософта не едут ?(
...
Рейтинг: 0 / 0
Что с глобальными переменными?
    #33443471
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это ничего, что вы объявляете переменную DontChangeCurrent, а проверяете - DontProcessCurrent?
...
Рейтинг: 0 / 0
Что с глобальными переменными?
    #33443851
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrik77Спавибо за ответы. Я всё это понимаю, и про модуль, и Option Explicit ставить пытался. Я вам задачу плохо расписал, злой был как чёрт.

значит дело было так: ...



Я конечно извиняюсь, но по моему, тут вообще полная лажа. Ты лучше скажи чего сделать-то хотел? А умные люди подскажут...

P.S. А с глобальными переменными в VB всё в порядке, ищите причину в другом месте...
...
Рейтинг: 0 / 0
Что с глобальными переменными?
    #33444323
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работаете в Аксессе?
Там события не синхронизуются строками программы.
После rs.Move не обязательно наступит событие - а - потом - следующая строчка программы.
Скорее всего программа "проскакивает" дальше, а событие обрабатывается уже после.
Честно скажу не проверял сие предположение, но на подобные проблемы наталкивался - была малюсенкая практика в аксессе.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Что с глобальными переменными?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]