|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Michelle Анатолий ( Киев )Любые целые числа (отличные от 0 и -1) оператор Not превращает в другие целые числа. Вы правы был не внимателен >>Прошу прощения, но мне кажется, что Вы сорите.))) Есть маненько. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 12:31 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Панург Код: vbnet 1.
Многие функции API возвращают 0 или 1 как булевы значения, в системе они соответствуют False и True Такое условие дало False для совместимой среды разработки, и True для несовместимой. Вроде, тоже правильно. Но мне все же очевидней условие Код: vbnet 1.
Только действия противоположные. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 12:37 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )Итак: 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.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 13:04 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__MichelleТо есть, применение Not к выражению, трактуемому как True, должно давать False. Нет. Применение Not к настоящему True должно давать False. А только после этого результат трактуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 16:56 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Владимир Саныч__MichelleТо есть, применение Not к выражению, трактуемому как True, должно давать False. Нет. Применение Not к настоящему True должно давать False. А только после этого результат трактуется.То есть, Not корректно применяется только к Boolean. Числа, отличные от 0, -1, Null, следует предварительно преобразовать в "истинное" True. Код: vbnet 1. 2. 3. 4.
И в справке msdn.microsoft.com "Справочник по языку VBA для Office > Константы компилятора" должно было быть уточнение, что значение True для этих констант не -1, а 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 18:46 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle..., что значение True для этих констант не -1, а 1. :) Зря вы так. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 19:27 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Predeclared__Michelle..., что значение True для этих констант не -1, а 1. :) Зря вы так.Почему? Разве -1? У меня получилось, что 1. Проверяла. Код: vbnet 1. 2. 3.
А Вы считаете иначе? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 19:42 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Что получится? Код: vbnet 1. 2. 3.
зы. У меня нет доступа к 2013. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 20:02 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Получится ошибка компиляции. Рисунок вставлять не буду, просто скопирую сообщение. --------------------------- Microsoft Visual Basic --------------------------- Compile error: Variable not defined --------------------------- ОК Справка --------------------------- Думаю, константы эти известны только препроцессору. 2013-го у меня тоже нет. Сейчас проверяю в 2000-м. Ноутбук с 2003-м и 2007-м доставать не хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 20:20 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
ОК. Я то подозреваю что они лонг. (в 32) Да бес с ними. Вы неверно интерпретируете текст по ссылке. В табличках, в колонке Значение", указано НЕ значение самой константы, а значение-результат интерпретации ее (константы) значения в конструкции If ... Then. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 20:56 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
В оригинале "the compiler constants are defined as follows". Определяются, задаются,.... В заголовке Value, значение. И на что это влияет с точки зрения моего понимания? А в примерах там и подавно, смотрите, какие разъяснения даны. Код: vbnet 1. 2. 3. 4. 5. 6. 7.
И какому же true они, согласно этим комментариям, равны, позвольте спросить? Обычному для VBA -1, как можно ожидать, исходя из названия справки "Справочник по языку VBA"? Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 21:11 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle... [/src]И какому же true они, согласно этим комментариям, равны, позвольте спросить? ... Никакому. Им нет необходимости и возможности равняться True. Keyword True имеет свое значение, каждая из констант - свое. Они даже разных типов данных. То, что в комментариях они понаписали не совсем (точнее, совсем не) корректное: ' Win64=true, Win32=true, Win16= false не дает повода предлагать не менее нелепое: __Michelle..., что значение True для этих констант не -1, а 1 Значение Keyword True не может быть описано по-разному для разного. Оно однажды описано и приколочено гвоздями к стенке. Значение констант тоже описано однажды, тоже приколочено к стенке, и не имеет (и не может по определению иметь) особого значения "True". :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 22:18 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
PredeclaredТо, что в комментариях они понаписали не совсем (точнее, совсем не) корректное: ' Win64=true, Win32=true, Win16= false не дает повода предлагать не менее нелепое: __Michelle..., что значение True для этих констант не -1, а 1Вовсе не на основе процитированного комментария сделан мною этот "нелепый" вывод. А на основе нескольких проверок. Могу согласиться лишь с тем, что формулировка этого вывода слегка "нелепая". Правильно будет так: значение этих констант в случаях "совместимости" (для краткости так обзову) равно 1. Насчет "приколоченности гвоздями к стенке"... Все относительно. В VBA True=-1, в SQL Server True=1. Почему я не могла допустить, что для препроцессора тоже True=1, прочитав эту справку и убедившись на опыте, что VBA6 не равно VBA-шному True? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 22:48 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle... Правильно будет так: значение этих констант в случаях "совместимости" (для краткости так обзову) равно 1. НЕ МОЖЕТ быть разных значений констант для разных случаев. Ну не может по определению. Патамушта константы. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 23:03 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
PredeclaredНЕ МОЖЕТ быть разных значений констант для разных случаев. Ну не может по определению. Патамушта константы. :)Да-да.))) Только на рисунке с табличкой, который Вы приводите, для констант VBA6 и VBA7 по две строки, с двумя разными значениями для каждой. Конечно, в "несовместимых" случаях они просто неизвестны препроцессору и потому результат False. Но, тем не менее... И потом, если я говорю о значении, принимаемом константой в таком-то случае, разве это означает, что я собираюсь приписывать ей другие значения для других случаев? Нет. В случае "совместимости" константа знакома препроцессору и имеет значение 1, в случае же "несовместимости" константа не знакома препроцессору и попытка ее проанализировать через #If дает False. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 23:32 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle... Только на рисунке с табличкой, который Вы приводите, для констант VBA6 и VBA7 по две строки, с двумя разными значениями для каждой. ... Разными НЕ значениями константы. С разными результатами интерпретации части condition стайтмента If...Then...Else для разных версий платформ. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 23:50 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle... И потом, если я говорю о значении, принимаемом константой в таком-то случае, ... В 31 раз: НЕ МОЖЕТ константа "принимать" значение. Оно (значение константы) один раз описано при описании самой константы, и приколочено к стене гвоздями соткой. И не зависит ни от каких случаев. От слова "Вообще". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 23:54 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
О, Боги.... Да. Знала ведь, что это "уязвимая"формулировка, но надеялась, что контекст выручит. Хорошо, не "о значении, принимаемом константой ...", а "о значении, имманентно присущем константе и проявляющемся в таком-то случае".))) Это значение единица. А теперь той же монетой.))) "..... части condition стайтмента If...Then...Else..." Эти константы не могут участвовать в таком If, только в #If....#Then.....#Else. ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 00:15 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle..., а "о значении, имманентно присущем константе и проявляющемся в таком-то случае".))) ... Ну да, ну да. В полнолуние проявляется имманентно присущее значение констант. :) __Michelle... Эти константы не могут участвовать в таком If, только в #If....#Then.....#Else... И ...? От наличия решеток If...Then...Else перестал быть If...Then...Else? Или у него пропала часть condition? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 10:12 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
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 ???) То есть, Вы утверждаете, что один и тот же код всегда имеет дело с одним и тем же значением используемой константы условной компиляции? Но ведь смысл условной компиляции в том и состоит, чтобы, в зависимости от текущего значения этой константы либо компилировать, либо игнорировать некоторый участок кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 11:53 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle..., в зависимости от текущего значения этой константы ... Все, я больше не могу, и не хочу в 32 раз писать одну и ту же прописанную в букваре истину. Michelle, завязывайте бухать уже! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 13:37 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Predeclared__Michelle..., в зависимости от текущего значения этой константы ... Все, я больше не могу, и не хочу в 32 раз писать одну и ту же прописанную в букваре истину. Michelle, завязывайте бухать уже! :)Вместо 32-кратной писанины лучше хотя бы раз внимательно прочитать мои сообщения. Думаете, очень остроумно завершили навязанную мне Вами дискуссию? А мне кажется, грубо и неуместно. Но, действительно, достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 13:47 |
|
|
start [/forum/topic.php?fid=45&msg=39208762&tid=1613720]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
277ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 326ms |
total: | 705ms |
0 / 0 |