powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Константы условной компиляции
22 сообщений из 47, страница 2 из 2
Константы условной компиляции
    #39207401
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michelle
Анатолий ( Киев )Любые целые числа (отличные от 0 и -1) оператор Not превращает в другие целые числа.
Вы правы был не внимателен
>>Прошу прощения, но мне кажется, что Вы сорите.)))
Есть маненько.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39207410
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
Код: vbnet
1.
#If Not VBA6 <> 0 Then

Многие функции API возвращают 0 или 1 как булевы значения, в системе они соответствуют False и True Такое условие дало False для совместимой среды разработки, и True для несовместимой.
Вроде, тоже правильно.
Но мне все же очевидней условие
Код: vbnet
1.
#If VBA6 Then

Только действия противоположные.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39207454
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев )Итак:
1. Not, это оператор меняющий состояние каждого бита на противоположное, т.е. 1->0, а 0->1
2. Хоть VBA в операторах сравнения и оперирует понятиями ноль и не ноль, но родным True для него является -1, т.е. в FF в Hex, т.е. все биты равны 1. Поэтому Not превращает это значение в 0 и обратно.
Любые целые числа (отличные от 0 и -1) оператор Not превращает в другие целые числа.
При этом для всех числовых типов кроме Byte (здесь FF равно 255) самый старший бит определяет - положительное число или отрицательное.Все это поняла. И, надеюсь, усвоила.
И пояснения -Практикант- — также.
Спасибо всем.
Про старший бит тоже уже начала вспоминать. Надо бы Джермейна полистать.)))

Но вот осталась "закавыка":
https://msdn.microsoft.com/ru-ru/library/office/gg264614.aspx msdn.microsoft.com Справочник по языку VBA для Office > Константы компилятораКонстантаЗначениеОписаниеVba6TrueУказывает, что в качестве среды разработки используется Visual Basic для приложений, совместимый с версией 6.0.Vba6FalseУказывает, что средой разработки не является Visual Basic для приложений, совместимый с версией 6.0.Vba7TrueУказывает, что в качестве среды разработки используется Visual Basic для приложений, совместимый с версией 7.0.Vba7FalseУказывает, что средой разработки не является Visual Basic для приложений, совместимый с версией 7.0.Нет пояснения, что в данном случае True не -1, а 1.
Отсюда и все дальнейшие нестыковки, как мне кажется.

Но все на пользу — теперь буду знать тонкости If и Not.)))
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208587
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
__MichelleТо есть, применение Not к выражению, трактуемому как True, должно давать False.
Нет. Применение Not к настоящему True должно давать False. А только после этого результат трактуется.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208696
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч__MichelleТо есть, применение Not к выражению, трактуемому как True, должно давать False.
Нет. Применение Not к настоящему True должно давать False. А только после этого результат трактуется.То есть, Not корректно применяется только к Boolean.
Числа, отличные от 0, -1, Null, следует предварительно преобразовать в "истинное" True.
Код: vbnet
1.
2.
3.
4.
? 10,        Not 10
  10         -11 
? CBool(10), Not Cbool(10)
  True       False

И в справке msdn.microsoft.com "Справочник по языку VBA для Office > Константы компилятора"
должно было быть уточнение, что значение True для этих констант не -1, а 1.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208730
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle..., что значение True для этих констант не -1, а 1.
:)
Зря вы так.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208735
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared__Michelle..., что значение True для этих констант не -1, а 1.
:)
Зря вы так.Почему? Разве -1? У меня получилось, что 1. Проверяла.
Код: vbnet
1.
2.
3.
#If VBA6 = True Then    ' дает False
#If VBA6 = 1 Then       ' дает True
#If VBA6 = –1 Then      ' дает False

А Вы считаете иначе?
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208742
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что получится?
Код: vbnet
1.
2.
3.
Dim v
v = VBA6
Debug.Print TypeName(v)



зы. У меня нет доступа к 2013.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208744
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получится ошибка компиляции.
Рисунок вставлять не буду, просто скопирую сообщение.
---------------------------
Microsoft Visual Basic
---------------------------
Compile error:

Variable not defined
---------------------------
ОК Справка
---------------------------

Думаю, константы эти известны только препроцессору.

2013-го у меня тоже нет. Сейчас проверяю в 2000-м.
Ноутбук с 2003-м и 2007-м доставать не хочется.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208762
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК.
Я то подозреваю что они лонг. (в 32)
Да бес с ними.

Вы неверно интерпретируете текст по ссылке.
В табличках, в колонке Значение", указано НЕ значение самой константы,
а значение-результат интерпретации ее (константы) значения в конструкции If ... Then.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208769
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В оригинале "the compiler constants are defined as follows".
Определяются, задаются,....
В заголовке Value, значение.

И на что это влияет с точки зрения моего понимания?

А в примерах там и подавно, смотрите, какие разъяснения даны.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
#If Win64 Then 
' Win64=true, Win32=true, Win16= false 
#ElseIf Win32 Then 
' Win32=true, Win16=false 
#Else 
' Win16=true 
#End If

И какому же true они, согласно этим комментариям, равны, позвольте спросить?
Обычному для VBA -1, как можно ожидать, исходя из названия справки "Справочник по языку VBA"?
Нет.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208809
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle...
[/src]И какому же true они, согласно этим комментариям, равны, позвольте спросить?
...
Никакому.
Им нет необходимости и возможности равняться True.
Keyword True имеет свое значение,
каждая из констант - свое.
Они даже разных типов данных.

То, что в комментариях они понаписали не совсем (точнее, совсем не) корректное:
' Win64=true, Win32=true, Win16= false
не дает повода предлагать не менее нелепое:
__Michelle..., что значение True для этих констант не -1, а 1

Значение Keyword True не может быть описано по-разному для разного.
Оно однажды описано и приколочено гвоздями к стенке.

Значение констант тоже описано однажды,
тоже приколочено к стенке,
и не имеет (и не может по определению иметь) особого значения "True".
:)
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208818
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PredeclaredТо, что в комментариях они понаписали не совсем (точнее, совсем не) корректное:
' Win64=true, Win32=true, Win16= false
не дает повода предлагать не менее нелепое:
__Michelle..., что значение True для этих констант не -1, а 1Вовсе не на основе процитированного комментария сделан мною этот "нелепый" вывод.
А на основе нескольких проверок.
Могу согласиться лишь с тем, что формулировка этого вывода слегка "нелепая".
Правильно будет так: значение этих констант в случаях "совместимости" (для краткости так обзову) равно 1.

Насчет "приколоченности гвоздями к стенке"...
Все относительно.
В VBA True=-1, в SQL Server True=1.
Почему я не могла допустить, что для препроцессора тоже True=1,
прочитав эту справку и убедившись на опыте, что VBA6 не равно VBA-шному True?
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208823
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle... Правильно будет так: значение этих констант в случаях "совместимости" (для краткости так обзову) равно 1.
НЕ МОЖЕТ быть разных значений констант для разных случаев.
Ну не может по определению. Патамушта константы.
:)
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208832
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PredeclaredНЕ МОЖЕТ быть разных значений констант для разных случаев.
Ну не может по определению. Патамушта константы.
:)Да-да.)))
Только на рисунке с табличкой, который Вы приводите,
для констант VBA6 и VBA7 по две строки, с двумя разными значениями для каждой.
Конечно, в "несовместимых" случаях они просто неизвестны препроцессору и потому результат False.
Но, тем не менее...

И потом, если я говорю о значении, принимаемом константой в таком-то случае,
разве это означает, что я собираюсь приписывать ей другие значения для других случаев?
Нет.
В случае "совместимости" константа знакома препроцессору и имеет значение 1,
в случае же "несовместимости" константа не знакома препроцессору и попытка ее проанализировать через #If дает False.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208836
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle... Только на рисунке с табличкой, который Вы приводите,
для констант VBA6 и VBA7 по две строки, с двумя разными значениями для каждой. ...
Разными НЕ значениями константы.
С разными результатами интерпретации части condition стайтмента If...Then...Else
для разных версий платформ.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208837
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle... И потом, если я говорю о значении, принимаемом константой в таком-то случае, ...
В 31 раз:
НЕ МОЖЕТ константа "принимать" значение.
Оно (значение константы) один раз описано при описании самой константы,
и приколочено к стене гвоздями соткой.
И не зависит ни от каких случаев. От слова "Вообще".
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208839
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, Боги....

Да.
Знала ведь, что это "уязвимая"формулировка, но надеялась, что контекст выручит.
Хорошо, не "о значении, принимаемом константой ...", а
"о значении, имманентно присущем константе и проявляющемся в таком-то случае".)))
Это значение единица.

А теперь той же монетой.)))
"..... части condition стайтмента If...Then...Else..."
Эти константы не могут участвовать в таком If, только в #If....#Then.....#Else.
)))
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39208990
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle..., а
"о значении, имманентно присущем константе и проявляющемся в таком-то случае".)))
...
Ну да, ну да.
В полнолуние проявляется имманентно присущее значение констант.
:)

__Michelle... Эти константы не могут участвовать в таком If, только в #If....#Then.....#Else...
И ...?
От наличия решеток If...Then...Else перестал быть If...Then...Else?
Или у него пропала часть condition?
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39209096
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Predeclared__Michelle..., а
"о значении, имманентно присущем константе и проявляющемся в таком-то случае".)))
...
Ну да, ну да.
В полнолуние проявляется имманентно присущее значение констант.
:)Нет. Не обязательно в полнолуние. Фаза Луны значения не имеет.
Я ведь уже писала в 19021105 про эту VBA6В случае "совместимости" константа знакома препроцессору и имеет значение 1,
в случае же "несовместимости" константа не знакома препроцессору и попытка ее проанализировать через #If дает False.
2. Predeclared__Michelle... Эти константы не могут участвовать в таком If, только в #If....#Then.....#Else...
И ...?
От наличия решеток If...Then...Else перестал быть If...Then...Else?
Или у него пропала часть condition?Нет. Не перестает и не пропадает. Суть не в этом.
У Вас было про "разные результаты интерпретации части condition стайтмента If...Then...Else для разных версий платформ.".
Но для этого варианта If...Then...Else нет зависимости результата интерпретации части condition от версии платформы.

3.
Снова про "гвозди сотка". (Nine Inch Nails ???)
То есть, Вы утверждаете, что один и тот же код всегда имеет дело с одним и тем же значением используемой константы условной компиляции?
Но ведь смысл условной компиляции в том и состоит, чтобы, в зависимости от текущего значения этой константы
либо компилировать, либо игнорировать некоторый участок кода.
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39209229
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle..., в зависимости от текущего значения этой константы ...

Все, я больше не могу, и не хочу в 32 раз писать одну и ту же прописанную в букваре истину.

Michelle, завязывайте бухать уже!
:)
...
Рейтинг: 0 / 0
Константы условной компиляции
    #39209238
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared__Michelle..., в зависимости от текущего значения этой константы ...

Все, я больше не могу, и не хочу в 32 раз писать одну и ту же прописанную в букваре истину.

Michelle, завязывайте бухать уже!
:)Вместо 32-кратной писанины лучше хотя бы раз внимательно прочитать мои сообщения.

Думаете, очень остроумно завершили навязанную мне Вами дискуссию?
А мне кажется, грубо и неуместно.

Но, действительно, достаточно.
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Константы условной компиляции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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