|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Здравствуйте! Потребовалось мне одну разработку регулярно переводить в различные версии Access, включая Ac97. В разработке использованы некоторые возможности более поздних версий, неизвестные 97-ому. В частности, условное форматирование. Задается оно программно – изначально в ленточной форме отсутствует, чтобы не мигало и не тормозило, а в определенном случае создаются нужные правила, это вынесено в отдельную процедуру. Чтобы исключить ошибки компиляции, в Ac97 попробовала применить условную компиляцию. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Разумеется, Код: vbnet 1. 2. 3.
оказалось глупостью, ведь значение S в момент компиляции не определено, да и само S тоже. Передавать аргументы условной компиляции извне не очень хочется, так как потребуется их каждый раз задавать вручную. Кроме того, они и задаются по-разному: для Ac97 — через главное меню БД Код: vbnet 1.
для Ac2000 и далее — через редактор VBA Код: vbnet 1.
Запускать через ярлык со значением аргумента условной компиляции тоже не очень удобно. Пока вижу наименее трудоемкий способ таким – два разных условия и переносить знак комментария: Код: vbnet 1. 2. 3. 4. 5. 6.
Всего одно движение. Но хочется так наладить, чтобы все происходило вообще само собой, без моего участия каждый раз. Поэтому такой вопрос: Есть ли такая константа компилятора VBA, значение которой будет говорить об используемой версии Access, или хотя бы офиса? По аналогии с константами Win16/Win32/Win64. Список имеющихся констант смотрела https://msdn.microsoft.com/ru-ru/library/office/gg264614.aspx. Но вдруг кто-то знает секретные константы.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 15:36 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle, Константы VBA6 и VBA7 не помогут? Вроде как VBA6 это до Ac97, а 7 2000 и дальше ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 15:49 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
akirey, Спасибо. Очень возможно. Доступ к 97-му буду иметь завтра, там и проверю. Думаю, главное определить, что это 97, то есть достаточно будет проверять Vba6. Для всех же остальных версий действия одинаковые. А если на машине несколько офисов, не перекроется ли более раннее VBA более поздним? Наверное, все же нет. В общем, надо все проверить. О результатах сообщу. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 15:59 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
В вашем конкретном случае условная компиляция не нужна. Достаточно обычного If, т.к. наличие свойства/метода у объекта при компиляции не проверяется. Только acExpression нужно заменить значением или собственной (можно одноименной) константой. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 16:16 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), Да. Спасибо. Этот вариант мною уже опробован как запасной. Но я еще для гарантии вместо явного указания формы сделала так Код: vbnet 1. 2. 3. 4.
Может, это использование объекта и лишнее. Вместо acExpression использовала 1. Но это уже после того, как у меня не вышло с условной компиляцией. А разобраться ведь все-таки надо.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 16:25 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle, Есть ещё 1 вариант, правда очень трудоёмкий. Зато есть существенные плюсы. Можно вообще убрать весь код из MS Access и написать VB скрипты, которые будут находиться в какой-либо таблице. Создаёте единcтвенную VBA процедуру, которая и запускает VB скрипт. Что-то вроде этого 13121558 Правда VB скрипт немножко отличается от VBA, не все функции и процедуры есть в VBS, да и есть некоторые отличии. Со временем привык как-то. Всё, что VB скрипт не умеет, пришлось делать в VBA, а в VB скрипт вызывать их. Какие существенные плюсы можно извлечь от этого? 1) Вам достаточно поменять данные в спец. таблице, где хранятся VB скрипты. У Всех юзеров не надо будет менять файл, а если все пользуются общим файлом, то не надо выгонять их. 2) Можно потихоньку создавать такие коды, которые будут работать в любой ОС и в любом офисе (32 или 64 разрядность не имеет значение, т.к. VBS это язык позднего связывания!). Минусы: 1) Хлопотно такие коды писать. Лично я сначала тренируюсь в Excel, ибо нет необходимости предварительного сохранения тренировочного файла. 2) Нет возможности прервать запущенный VBS код с помощью Ctrl + Break. 3) Очень осторожно с таблицей, где будут хранится все скрипты. Нечаянно удалил, то всё. Все коды исчезнут. Поэтому тщательно нужно охранять от юзеров. P.S. Даже Win API функцию тоже можно вызывать в VB скрипт, только для этого сначала надо регистрировать библиотеку dynwrapx.dll. Вот примерчик 14019148 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 20:09 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle, добрый вечер. Может пригодится, гляньте(из хелпа): Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 20:42 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Вакшуль Сергей, Если ТС и в правду юзает А97, то не пригодится. А97 не знает что такое currentproject. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 20:46 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
studieren, ну я не помню, как там 97-ом но есть два св-ва: CodeProject.FileFormat CurrentProject.FileFormat Returns an AcFileFormat constant indicating the Microsoft Access version format of the specified project. Read-only. Может CodeProject нужно попробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 20:51 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
studieren, Спасибо. Очень интересно. Что-то более осмысленное сказать пока не в состоянии - надо внимательно прочитать и здесь и по ссылкам. И не один раз. Первое впечатление - весьма непростой вариант, для корифеев.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 21:07 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Вакшуль Сергей, ))) Спасибо. Но это действительно появилось позже. Сейчас проверила в 2000-м - еще такого свойства нет, а вот в 2003-м уже есть. И потом, ведь это, как мне кажется, примерно то же, что и SysCmd(acSysCmdAccessVer). Только результат по-другому представлен. А, нет, все же не полный аналог. SysCmd(acSysCmdAccessVer) дает версию Access, а CodeProject.FileFormat - в каком формате сохранен файл БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 21:13 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle, очень интересный вопрос вы задали. Условную компиляцию использовал но глубоко не копал. Оказывается, если в #If использовать выражение, которое не объявлено ни в #Const, ни в параметрах проекта, то оно воспринимается как False. В А2010 есть внутренние константы VBA6 и VBA7, обе в #If принимаются как True. В А2000-2003 вероятно (проверить негде) только VBA6 - True. А А97, это VBA 5 , поэтому, ИМХО, достаточно проверять VBA6, чтоб выяснить это. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 11:27 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), akirey, Спасибо за идеи. Прошу прощения за долгую паузу.))) Проверила константы VBA6 и VBA7 в версиях Access 97, 2000, 2003, 2007. Получилось следующее. В 97-ом ни одна константа не известна. 2000-й, 2003-й, 2007-й знают только VBA6. Гипотетической константы VBA5 нет вообще. Окончательно сделала так: Код: vbnet 1. 2. 3. 4. 5.
Все работает. И не пришлось применять уловки, замещать acExpression значением. _________________________________________________________________________________ Однако попутно возникли некоторые странности, заставившие разбираться. Код: vbnet 1.
и Код: vbnet 1.
дают одинаковый результат – Истина. Почему? В конце концов, экспериментальным путем, выяснилось, что VBA6 = 1, а Not VBA6 = –2. И то, и другое трактуется как Истина. И вообще, Истиной считается любое ненулевое и непустое число – как положительное, так и отрицательное, как целое, так и дробное. А Not, согласно результатам моих экспериментов, действует на <значение> так: Код: vbnet 1.
, то есть, например, Код: vbnet 1. 2.
Информация о том, что ненулевое число дает Истину, где-то мне раньше попадалась. Что скажете обо всем этом?))) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2016, 18:29 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__MichelleИнформация о том, что ненулевое число дает Истину, где-то мне раньше попадалась. If именно так и работает. Теперь мы знаем, что так же работает и #If. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2016, 18:38 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Владимир Саныч, Меня удивило, что поэтому #If VBA6 Then и #If Not VBA6 Then дают одинаковый результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2016, 18:44 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__MichelleА Not, согласно результатам моих экспериментов, действует на <значение> так: Код: vbnet 1.
Из справки AccessIn addition, the Not operator inverts the bit values of any variable and sets the corresponding bit in result according to the following table: If bit in expression isThen bit in result is 01 10 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 05:45 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__MichelleВладимир Саныч, Меня удивило, что поэтому #If VBA6 Then и #If Not VBA6 Then дают одинаковый результат. Здесь Not работает как-то странно. If работает правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 07:53 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Владимир Саныч__MichelleВладимир Саныч, Меня удивило, что поэтому #If VBA6 Then и #If Not VBA6 Then дают одинаковый результат. Здесь Not работает как-то странно. If работает правильно. Если принять во внимание __Michelle... экспериментальным путем выяснилось, что VBA6 = 1 ... то и Not работает правильно: Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 09:18 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Но в справке также сказаноИз справки Access Remarks The following table illustrates how result is determined: If expression is Then result is True False False True Null Null То есть, применение Not к выражению, трактуемому как True, должно давать False. Возьмем выражение 1, это трактуется как True, но Код: vbnet 1. 2.
.А –2 тоже трактуется как True. Налицо противоречие. Табличка, получается, справедлива только, если expression 0, -1 или Null. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 09:38 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__Michelle, Код: vbnet 1.
Многие функции API возвращают 0 или 1 как булевы значения, в системе они соответствуют False и True ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 10:24 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
__MichelleТо есть, применение Not к выражению, трактуемому как True, должно давать False. Возьмем выражение 1, это трактуется как True, но Код: vbnet 1. 2.
.А –2 тоже трактуется как True. Налицо противоречие. Табличка, получается, справедлива только, если expression 0, -1 или Null. Единица трактуется как True инструкцией If, а Not считает ее числом. Кроме того, обратите внимание, что True(-1) при инвертировании битов переходит в False(0) и наоборот - False в True. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 10:29 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Michelle, мне нравится ваша жажда познания... Итак: 1. Not, это оператор меняющий состояние каждого бита на противоположное, т.е. 1->0, а 0->1 2. Хоть VBA в операторах сравнения и оперирует понятиями ноль и не ноль, но родным True для него является -1, т.е. в FF в Hex, т.е. все биты равны 1. Поэтому Not превращает это значение в 0 и обратно. Любые целые числа (отличные от 0 и -1) оператор Not превращает в другие целые числа. При этом для всех числовых типов кроме Byte (здесь FF равно 255) самый старший бит определяет - положительное число или отрицательное. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 10:47 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )Michelle, мне нравится ваша жажда познания... Итак: 1. Not, это оператор меняющий состояние каждого бита на противоположное, т.е. 1->0, а 0->1 2. Хоть VBA в операторах сравнения и оперирует понятиями ноль и не ноль, но родным True для него является -1, т.е. в FF в Hex, т.е. все биты равны 1. Поэтому Not превращает это значение в 0 и обратно. Любые целые числа (отличные от 0 и -1) оператор Not превращает в другие целые числа. При этом для всех числовых типов кроме Byte (здесь FF равно 255) самый старший бит определяет - положительное число или отрицательное. А есть есчё константа "-1". С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 11:01 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
ROIАнатолий ( Киев )Michelle, мне нравится ваша жажда познания... Итак: 1. Not, это оператор меняющий состояние каждого бита на противоположное, т.е. 1->0, а 0->1 2. Хоть VBA в операторах сравнения и оперирует понятиями ноль и не ноль, но родным True для него является -1, т.е. в FF в Hex, т.е. все биты равны 1. Поэтому Not превращает это значение в 0 и обратно. Любые целые числа (отличные от 0 и -1) оператор Not превращает в другие целые числа. При этом для всех числовых типов кроме Byte (здесь FF равно 255) самый старший бит определяет - положительное число или отрицательное. А есть есчё константа "-1". С уважением. Вернее значение, сори. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 11:02 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#18+
ROIА есть есчё константа "-1". С уважением.ROIВернее значение, сориВ чем смысл Вашего замечания? Прошу прощения, но мне кажется, что Вы сорите.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 12:17 |
|
Константы условной компиляции
|
|||
---|---|---|---|
#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?all=1&fid=45&tid=1613720]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 171ms |
0 / 0 |