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

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

Код чужой, с наворотами самописных длл и его надо будет дальше отдать. Где-то накосячено, а просматривать сотни ее вхождений - влом. Пусть сама вылезет.
...
Рейтинг: 0 / 0
Нужна неизменяемая переменная
    #38370200
Кумук
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112, смеяться, право, не грешно.
А какое мнение по варианту с классом и счетчиком?
...
Рейтинг: 0 / 0
Нужна неизменяемая переменная
    #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
Нужна неизменяемая переменная
    #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
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Нужна неизменяемая переменная
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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