|
|
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
Программа под Delphi 6. Имеется: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ЗЫ. Я в курсе, что можно сделать "TTimerRequirement = procedure(var b: boolean) of object;". Интересует, можно ли именно указанный мной вариант разрулить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2007, 18:28 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
разобрался. Надо было Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2007, 18:38 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
ErVразобрался. Надо было Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 10:22 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
softwarerresult := not Assigned ( requirement ) or requirement ;[/src] Жестоко людям советовать код, работоспособность которого зависит от настроек компилятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 15:20 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
LordMADЖестоко людям советовать код, работоспособность которого зависит от настроек компилятора. Фраза формально верна, но с ее сутью я в данном случае не соглашусь. Сами по себе подобные настройки - огромное зло и головотяпство. Это относится и к ряду дельфовых переключателей, и ко многим другим продуктам. Наличие такой настройки фактически означает отсутствие у идеологов продукта.... затруднюсь подобрать подходящее слово, есть такая идиома - "политическая воля", так вот, отсутствие "неполитической политической воли". Дык вот, с моей точки зрения, все - даже не "все нормальные люди", а "практически все" - по факту давным-давно согласны о том, какие значения этих настроек "стандартны", и если вдруг где-то по каким-то соображениям решают от них отступить - знают об этом, пишут пять предупреждений вокруг итп. Если сегодня найдется человек, у которого стоит {$B+} или, допустим, {$H-}, и он об этом не помнит и не знает - это исключительно его проблема, можно вполне смело утверждать, что практически любой чужой код заметной длины - включая нестандартные компоненты (и стандартные, кстати, тоже) у него корректно не заработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 16:03 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
softwarer wrote: > result := not Assigned ( requirement ) or requirement ; EAccessViolation может быть. Для работы такого надо (если не ошибаюсь), чтобы были включены быстрые булевские вычисления и то я бы 100% гарантии не дал (на любой версии дельфи версии), что при обработке строки, если (requirement = nil) не будет произведена попытка вызова requirement. Плюс это попросили помочь с мелким заданием, так что не вижу смысла человека ещё и ключами компилятора заморачивать, ибо ему во всем остальном ещё ковыряться и ковыряться. :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 16:08 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
softwarer LordMADЖестоко людям советовать код, работоспособность которого зависит от настроек компилятора. Фраза формально верна, но с ее сутью я в данном случае не соглашусь. Сами по себе подобные настройки - огромное зло и головотяпство. Это относится и к ряду дельфовых переключателей, и ко многим другим продуктам. Наличие такой настройки фактически означает отсутствие у идеологов продукта.... затруднюсь подобрать подходящее слово, есть такая идиома - "политическая воля", так вот, отсутствие "неполитической политической воли". Дык вот, с моей точки зрения, все - даже не "все нормальные люди", а "практически все" - по факту давным-давно согласны о том, какие значения этих настроек "стандартны", и если вдруг где-то по каким-то соображениям решают от них отступить - знают об этом, пишут пять предупреждений вокруг итп. Если сегодня найдется человек, у которого стоит {$B+} или, допустим, {$H-}, и он об этом не помнит и не знает - это исключительно его проблема, можно вполне смело утверждать, что практически любой чужой код заметной длины - включая нестандартные компоненты (и стандартные, кстати, тоже) у него корректно не заработает. Дело в другом, можно просто ошибочно после какого-то куска кода, в котором {$B+}, забыть его отменить {$B-}, ведь бывают случаи, когда в результате анализа производительности кода имеет смысл поставить {$B+}. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 16:16 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
LordMADДело в другом, можно просто ошибочно после какого-то куска кода, в котором {$B+}, забыть его отменить {$B-}, В первую очередь, я не вижу практического смысла в наличии таких ключей в коде вообще. Но в любом случае обоснование довольно странное - этак можно и сказать, мол, "перед посоветованным кодом я поставил begin, а после - забыл поставить end, так вот, он почему-то не работает". Скажу так: я приму точку зрения "там, где все равно, лучше писать код, не зависящий от подобных деталей". Но с моей точки здесь не все равно, здесь речь идет о том, что мысль может быть выражена четко и лаконично, а может - более косноязычно, вплоть до откровенного заикания в духе Код: plaintext C моей точки зрения, эта разница - важнее, хотя безусловно, вопрос вкусов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 16:43 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
softwarerВ первую очередь, я не вижу практического смысла в наличии таких ключей в коде вообще.Я уже привел пример - это увеличение производительности. softwarerНо в любом случае обоснование довольно странное - этак можно и сказать, мол, "перед посоветованным кодом я поставил begin, а после - забыл поставить end, так вот, он почему-то не работает".Я бы согласился, если бы отсутствие выключения ключа приводило бы к ошибке/предупреждению/хинту на этапе компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 16:54 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
LordMADЯ уже привел пример - это увеличение производительности. Я помню и отвечаю с учетом этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 17:07 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
ErVПлюс это попросили помочь с мелким заданием, так что не вижу смысла человека ещё и ключами компилятора заморачивать, ибо ему во всем остальном ещё ковыряться и ковыряться. Если так, почему Вы используете переменную Result? Она, знаете ли, тоже "заморачивать ключами компилятора". LordMADЯ бы согласился, если бы отсутствие выключения ключа приводило бы к ошибке/предупреждению/хинту на этапе компиляции. Кстати, неплохая мысль.... жаль, что Borland этого не сделает :) Скажу так: с моей точки зрения, требование писать код так, чтобы он корректно работал при любых настройках Syntax Options - издевательство над программистом. Наверное, жестким регламентом такого добиться, но это на редкость непрактично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 17:20 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
softwarer wrote: > Если так, почему Вы используете переменную Result? Она, знаете ли, тоже > "заморачивать ключами компилятора". Ну хотя бы потому, что она при настройках по умолчанию присутствует. Потом, в исхоодниках VCL она используется направо и налево. (Far'ом нашел 332 файла (в каталоге Delphi6\Source), где эта переменная используется). ЗЫ. Народ, давайте не будем очередной холивар устраивать, а? Ну какая разница кто как пишет - с ключами или без... Они для того и были, по-моему, сделаны чтобы была извините, но возможность 1) ими пользоваться 2) ими не пользоваться - смотря к чему у программера душа больше лежит.... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 17:36 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
ErVНу хотя бы потому, что она при настройках по умолчанию присутствует. И чем это отличается от приведенного мной кода? При настойках по умолчанию он будет правильно работать. ErVПотом, в исхоодниках VCL она используется направо и налево. В исходниках VCL полно мест, которые "могут привести к AV". Назвать точное количество затруднительно, скажем, только в TCustomForm: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ErVЗЫ. Народ, давайте не будем очередной холивар устраивать, а? [/src]Да при чем тут холивар? В том, что касается заданного Вам вопроса, я пытаюсь найти хоть какую-то логику в действиях. [quot ErV]Ну какая разница кто как пишет - с ключами или без... Они для того и были, по-моему, сделаны чтобы была извините, но возможность 1) ими пользоваться 2) ими не пользоваться - смотря к чему у программера душа больше лежит.... Да нет, к сожалению, совсем не для этого. Они были сделаны для того, чтобы избавиться от сегодняшнего прыщика ценой завтрашнего нарыва. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:05 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
softwarer LordMADЯ уже привел пример - это увеличение производительности. Я помню и отвечаю с учетом этого.Ты не видишь практического смысла в увеличении производительности с помошью таких ключей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:30 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
softwarerСкажу так: с моей точки зрения, требование писать код так, чтобы он корректно работал при любых настройках Syntax Options - издевательство над программистом. Наверное, жестким регламентом такого добиться, но это на редкость непрактично.А советовать код, который работает только при определенных настройках, но не упомянуть об этих настройках, это не издевательство? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:34 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
LordMADТы не видишь практического смысла в увеличении производительности с помошью таких ключей? Я не вижу смысла писать на дельфе фрагменты кода, из которого потребуется выжимать производительность таким образом. Лучше использовать ассемблерные вставки и/или более оптимизирующий компилятор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:44 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
LordMADА советовать код, который работает только при определенных настройках, но не упомянуть об этих настройках, это не издевательство? ;) Как я показал выше, автор изначально привел код, который работает только при определенных настройках. Если Вы оберегаете его от моей ошибки, оставляя в плену аналогичной собственной - это не издевательство? Также отмечу, что мы вроде как давно пересекаемся в топиках, и до сего дня я не видел, чтобы в форуме Delphi или где-то еще Вы критиковали "код, который работает только при определенных настройках" - которого в архивах форума более чем достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:51 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
softwarerЯ не вижу смысла писать на дельфе фрагменты кода, из которого потребуется выжимать производительность таким образом. Лучше использовать ассемблерные вставки и/или более оптимизирующий компилятор.Во-первых, ты слишком плохого мнения об этом компиляторе - помогая ему разными такими безделушками, можно получить довольно неплохих результатов (с учетом того, что код при этом остается хорошо читаем). Во-вторых, если говорить о delphi language, то более оптимизирующего компилятора не видать :(. В-третьих, нужно все-таки соизмерять трудозатраты по оптимизации - писать кусок на ассемблере - это зачастую в наше время через чур: несколько лишних mov, которые сделает копилятор - погоды уже не делают, а вот избавится от неоправданных условных переходов можно иногда и с помошью {B+}. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 19:37 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
softwarer wrote: > И чем это отличается от приведенного мной кода? При настойках по умолчанию > он будет правильно работать. Допустим, мне просто не нравится такой вариант записи. Просто по логике вещей аргумент такого типа: (not Assigned ( requirement ) or requirement) для if должен раскладываться в дерево типа(or (not (assigned(requirement)), (requirement())), Выражение обычно считается от меньшего к большему - будь оно арифметическое или нет, т.е. чтобы посчитать or нужно вычислить оба его аргумента - т.е. assigned() и requrement(). Посему запись "if not assigned(requrement) or requrement" выглядит лично для меня двусмысленной, так как работает не так как написана. Т.е. вместо if not assigned(requrement) or requirement имеем несколько другое выражение, которое имеет двоякую интерпретацию, что лично меня "не по душе"... Такой ответ вас устроит? ЗЫ. млин, и вообще это было разовое мелкое задание... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 19:59 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
LordMADВо-первых, ты слишком плохого мнения об этом компиляторе Скорее, слишком аккуратист. Предпочитаю завинчивать каждую гайку подходящим ключом. LordMADВо-вторых, если говорить о delphi language, то более оптимизирующего компилятора не видать :( Ну так и нефиг писать критические с вычислительной точки зрения куски на Delphi. Оно не для этого. LordMADВ-третьих, нужно все-таки соизмерять трудозатраты по оптимизации - писать кусок на ассемблере - это зачастую в наше время через чур Зачем "писать"? Взять сгенерированный и доработать напильником - для мелких улучшений самое то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 22:07 |
|
||
|
Delphi 6: сравнить указатель на функцию с nil.
|
|||
|---|---|---|---|
|
#18+
ErVПосему запись "if not assigned(requrement) or requrement" выглядит лично для меня двусмысленной, так как работает не так как написана. Странное имхо рассуждение. Я так полагаю, оно в конечном итоге сводится к той двусмысленности, которую допустил Борланд, когда позволил писать Assigned(P) вместо Assigned(@P) итп. ErVЗЫ. млин, и вообще это было разовое мелкое задание... На которое я ответил одной строкой :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 22:17 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34555950&tid=1346031]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
134ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 391ms |

| 0 / 0 |
