![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
СЭНСЭЙ |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
Добрый день.
Знаю что в ПХП, например, операнды в условии обрабатываются с лева на право и их обработка прекращается если одно или несколько операндов удовлетворяет условие. Например:
аналог на делфи:
результат функции func2 не будет вычисляться и функция проигнорируется если результат выполнения func1()=true. А как обстоят дела в делфи? Как называется такая документация и где можно про это прочитать? П.С. в хелпе по делфи 7 я этой информации не нашел. Это сообщение отредактировал(а) СЭНСЭЙ - 6.12.2014, 21:20 |
||||
|
|||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Точно так же. Об этом не будет написано в справке к Delphi, это основы Pascal. Можешь экспериментальным путем это проверить. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
В делфи можно менять поведение http://stackoverflow.com/questions/1859846...an-if-statement http://docs.embarcadero.com/products/rad_s...uation_xml.html
-------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
СЭНСЭЙ |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
But notice that this isn't only an optimisation, since this feature allows you to write code like
which will work even if myarr[0] doesn't exist. This is rather common, actually. Но ведь в делфи и так можно обращаться к несуществующему элементу массива? Или только если массив динамический? Да - проверил. Только если массив динамический. Если индексы массива заданы явно то нельзя. И еще проверил:
выдает ошибку на условии так что похоже директива не помогает Это сообщение отредактировал(а) СЭНСЭЙ - 9.12.2014, 22:41 |
||||
|
|||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
на статических массивах компилятор проверяет индексы статически, где может.
а обращаться к несуществующим индексам нельзя, но для включения проверки индексов в рантайм есть отдельная директива компилятора {$R+} если она выключена то код проверяющий индекс не генерируется, но при обращении к несуществующим индексам возможны рандомные проблемы -------------------- Обижено школьников: 8 |
|||
|
||||
phomm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 7.10.2010 Репутация: нет Всего: 1 |
По последнему посту автора ответ:
директива тут ни при чём, она работает отдельно от проверки индексов, и компилятор спокойно съест код:
но засчёт буливала будет чтение по некорректному индексу. Просто компилятор умеет понимать, что индекс стамассива некорректный когда его задают константой (явной или просто числом), а вот при указании через переменную - не поймёт. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |