Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Нужна неизменяемая переменная / 6 сообщений из 6, страница 1 из 1
18.08.2013, 22:51
    #38370181
Кумук
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна неизменяемая переменная
Нужна железобетонная переменная, которую никто не сможет изменить после присвоения ей значения. Сделать класс и поставить счетчик? Может есть решение попроще?
...
Рейтинг: 0 / 0
18.08.2013, 23:08
    #38370188
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна неизменяемая переменная
КумукНужна железобетонная переменная, которую никто не сможет изменить после присвоения ей значения. Сделать класс и поставить счетчик? Может есть решение попроще?
а ж/б константа "не спасёт отца русской демократии" ?

и, какбэ, кто может изменить переменную в скомпиленом коде, кроме как логика выполнения этого самого кода, которую "нахлобучил" этот самый создатель кода ??
...
Рейтинг: 0 / 0
18.08.2013, 23:20
    #38370199
Кумук
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна неизменяемая переменная
qwerty112, никак не спасает константа. Отец плачет... :)
Она ж на стадии компиляции генерится, емнип.

Код чужой, с наворотами самописных длл и его надо будет дальше отдать. Где-то накосячено, а просматривать сотни ее вхождений - влом. Пусть сама вылезет.
...
Рейтинг: 0 / 0
18.08.2013, 23:23
    #38370200
Кумук
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна неизменяемая переменная
qwerty112, смеяться, право, не грешно.
А какое мнение по варианту с классом и счетчиком?
...
Рейтинг: 0 / 0
18.08.2013, 23:54
    #38370209
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна неизменяемая переменная
Кумукqwerty112, никак не спасает константа. Отец плачет... :)
Она ж на стадии компиляции генерится, емнип.

что "на стадии компиляции генерится" ?

КумукКод чужой, с наворотами самописных длл и его надо будет дальше отдать. Где-то накосячено, а просматривать сотни ее вхождений - влом. Пусть сама вылезет.
дык, с учётом того, что код чужой, ты не боишся, что такое "некислое" изменение убъёт этот код напроч ?
какая область видимости этой переменной ? она глобальная ?

вообщем, вариант есть, и простой "до крика"
делаешь общий модуль, в котором объявляешь новую переменную (MyVarNew) и два Property (MyVar) ОДНОИМЁННЫХ той твоей переменной, которую хочешь запретить менять,
саму переменную (её декларацию) - убиваешь

нуу и дальше, там где нужно, установить "старой" переменной значение, и ты "не против" - меняешь присваивание на MyVarNew
там где - против - не меняешь

или нигде не меняешь, а ставишь в Property Let MyVar точку останова и отслеживаешь кто/что и откуда пытается её менять
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Option Compare Database
Option Explicit

Dim MyVarNew As Long

Property Let MyVar(NewValue As Long)
'    MsgBox "Ахтунг !"
'    MyVarNew = NewValue
End Property

Property Get MyVar() As Long
    MyVar = MyVarNew
End Property

Sub test()
    MyVarNew = 0
    MyVar = 146
    Debug.Print MyVar
End Sub


Код: vbnet
1.
2.
test
 0 
...
Рейтинг: 0 / 0
19.08.2013, 00:22
    #38370216
Кумук
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна неизменяемая переменная
qwerty112,

* что "на стадии компиляции генерится" ?
- дык... читал где-то. У Гетца наверное :) Поэтому их и нельзя в коде присвоить.

Да, без разницы - почему. Написано - нельзя "You can't use variables, user-defined functions, or intrinsic Visual Basic functions (such as Chr) in expressions assigned to constants", значит принимаем на веру :)


* не боишся, что такое "некислое" изменение убъёт этот код напроч ?
- не-е :) Мне этого и надо. Иначе придется на себя взять отладку. Я сейчас вижу, что она в нескольких местах зачем-то перепроверяется. Два раза в длл засылается. Оно, может, и нормально там идет, но не дело это. Эти две переменные принципиально определяют схему работы продукта - какое окружение - тестовое или продакшн, и на каких данных. И такого добра - море. Я явные косяки поубирал, а вот такие "хитрости" - пусть сами вылазят.

За код - спасибо. Это то самое, что я и думал. Я в него счетчик таки поставлю. Пусть пока работают как есть. Посмотрю потом в логах - сколько раз она меняет значение. Должно быть только один - при начальном диалоге с юзером. Нахрена им тогда ее перепроверять с контролами?...
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Нужна неизменяемая переменная / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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