
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
12.10.2017, 19:01:48
|
|||
|---|---|---|---|
|
|||
try/finally в циклах. |
|||
|
#18+
Появился вот такой код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Скопом для каждого итема списка надо выполнить BeforeRefresh, а в конце так-же для каждого AfterRefresh. Эксепшен может быть везде (BeforeRefresh, BroadcastRefresh, AfterRefresh). Там я рисую графику. BroadcastRefresh должен быть вызван в любом случае. Как гарантировать, чтоб на каждый Items[i].BeforeRefresh был свой Items[i].AfterRefresh? Если бы не было циклов, я бы написал: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Тоже жуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 19:15:00
|
|||
|---|---|---|---|
|
|||
try/finally в циклах. |
|||
|
#18+
Как-то так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 19:26:35
|
|||
|---|---|---|---|
try/finally в циклах. |
|||
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 19:29:26
|
|||
|---|---|---|---|
try/finally в циклах. |
|||
|
#18+
А, точно Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 19:39:57
|
|||
|---|---|---|---|
try/finally в циклах. |
|||
|
#18+
С except вообще забавная история. Пытается прога что-нибудь сделать допустим Код: pascal 1. 2. 3. 4. 5. 6. 7. Вываливается exception на Do2. Хоть кто-нибудь задумывался о том, что необходимо в этом случае отменять Do1? Чтобы вернуть данные (если какие-то там изменились) в исходное состояние. Такие баги со временем в проге можно увидеть, когда операция лишь частично выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 19:53:04
|
|||
|---|---|---|---|
|
|||
try/finally в циклах. |
|||
|
#18+
Соколинский Борис, Спасибо. Так разве что: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Соколинский БорисА вообще нужно над архитектурой подумать. Не получается. Опасность BeforeRefresh и AfterRefresh преувеличил. Там вешается картинка, потом снимается. Но если ошибка, то останется висеть. Кар-Кар, В один цикл не получится. Там BroadcastRefrech специфический. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 20:09:02
|
|||
|---|---|---|---|
try/finally в циклах. |
|||
|
#18+
Кар-КарС except вообще забавная история. Пытается прога что-нибудь сделать допустим Код: pascal 1. 2. 3. 4. 5. 6. 7. Вываливается exception на Do2. Хоть кто-нибудь задумывался о том, что необходимо в этом случае отменять Do1? Чтобы вернуть данные (если какие-то там изменились) в исходное состояние. Такие баги со временем в проге можно увидеть, когда операция лишь частично выполняется. запили лесенку )))))) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 20:09:32
|
|||
|---|---|---|---|
|
|||
try/finally в циклах. |
|||
|
#18+
[quote Алексей Кл]Соколинский Борис, Спасибо. Так разве что: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Это еще зачем? В моем варианте, если ошибка в BeforeRefresh флаг останется false. Соколинский Борис Не получается. А кто мешает инкапсулировать флаг в объект и выставлять/снимать в самих методах Before../After? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 20:18:58
|
|||
|---|---|---|---|
|
|||
try/finally в циклах. |
|||
|
#18+
Соколинский БорисЭто еще зачем? В моем варианте, если ошибка в BeforeRefresh флаг останется false. Цикл прервется. Соколинский Борис А кто мешает инкапсулировать флаг в объект и выставлять/снимать в самих методах Before../After? Это частности. Меня смущают многоэтажные try finally except. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 20:50:10
|
|||
|---|---|---|---|
try/finally в циклах. |
|||
|
#18+
Алексей Кл, Хорошо работает - и ладно. Немного, правда, некрасиво. С другой стороны, если работать будет плохо - то никакая красота не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 20:58:14
|
|||
|---|---|---|---|
try/finally в циклах. |
|||
|
#18+
Соколинский БорисКак-то так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Только в последнем цикле нет смысла продолжать, если ItemFlags[i] равен false, так как исключение в верхнем цикле прервет его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 21:03:33
|
|||
|---|---|---|---|
|
|||
try/finally в циклах. |
|||
|
#18+
Алексей КлМеня смущают многоэтажные try finally except.На быстродействие это, скорее всего, никак не влияет. В плане громоздкости кода.. Ну можно методом имени softwarer-а запилить какие-нибудь вспомогательные - объекты с интерфейсом, которые в деструкторе будут вызывать AfterRefresh. Но если там будет исключение - туши свет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 22:24:04
|
|||
|---|---|---|---|
|
|||
try/finally в циклах. |
|||
|
#18+
Все просто. Заменить цикл рекурсией Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 22:27:11
|
|||
|---|---|---|---|
|
|||
try/finally в циклах. |
|||
|
#18+
Или даже так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.10.2017, 22:54:35
|
|||
|---|---|---|---|
|
|||
try/finally в циклах. |
|||
|
#18+
Соколинский БорисНо если там будет исключение - туши свет. Впрочем, нет. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.10.2017, 10:36:53
|
|||
|---|---|---|---|
try/finally в циклах. |
|||
|
#18+
Соколинский Борис, "Зачем делать сложно то, что проще простого ?" в 20865451 нормальный код был, а главное - понятный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2041719]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
90ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 247ms |
| total: | 463ms |

| 0 / 0 |
