
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
02.07.2018, 17:24
|
|||
|---|---|---|---|
|
|||
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
Есть некоторое множество функций. Функции чужие и их самих корректировать не получится. Функции эти имеют одно общее - они возвращают код ошибки (ну или успех). В большинстве случаев надо вызывать ряд функций друг за другом, но продолжать только если у предыдущих был успех. А также было бы крайне хорошо получать информацию на каком именно "шаге" (и по возможности в какой функции) возникла проблема. Можно городить жуткую лестницу: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Можно городить подряд, но с кучей проверок и досрочными выходами: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. А если у меня "цепочка" не из трёх, а их трёх десятков функций? И мне может понадобится их оперативно менять или переставлять местами или временно закоментировать какие-то? Не оборачивать же каждую чужую функцию чтоб бросала исключение? Полагаю будет как-то неудобно и затратно... Нужна какая-то общая обёртка или какой-то совершенно иной подход... Подскажите пожалуйста - что-то можно попробовать? Пока крутится на уме а не попытаться ли соорудить что-то подобное: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.07.2018, 17:28
|
|||
|---|---|---|---|
|
|||
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
ИнсомниаА также было бы крайне хорошо получать информацию на каком именно "шаге" (и по возможности в какой функции) возникла проблема. Если избавиться от этого желания, то можно написать так: Код: sql 1. Если не избавляться, то так: Код: sql 1. 2. 3. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.07.2018, 17:35
|
|||
|---|---|---|---|
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
ИнсомниаНо ума не приложу как такое реализовать... http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/System_Assert@Boolean.html]Assert ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.07.2018, 17:47
|
|||
|---|---|---|---|
|
|||
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
Писать тридцать функций чрез "and"? К тому же они не boolean возвращают, а некие собственные коды. Код: pascal 1. 2. 3. 4. 5. 6. А ещё код ошибки как бы надо бы сообщать: Код: pascal 1. 2. 3. 4. 5. 6. Как-то не сильно улучшилось в плане удобности написания/редактирования/чтения... Да и строковые константы вручную писать опять же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.07.2018, 17:49
|
|||
|---|---|---|---|
|
|||
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
ИнсомниаДа и если функция FuncB() или FuncC() завершилась неуспешно - то остальные двадцать+ уже не надо и пытаться вызывать, бесполезно.Они и не вызовутся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.07.2018, 17:54
|
|||
|---|---|---|---|
|
|||
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
Инсомниане boolean возвращают, а некие собственные коды.Я пишу так (для сокетов) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. и использование Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. О том, где возникла ошибка узнаю на основании анализа стека исключения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.07.2018, 17:59
|
|||
|---|---|---|---|
|
|||
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
ИнсомниаДа и если функция FuncB() или FuncC() завершилась неуспешно - то остальные двадцать+ уже не надо и пытаться вызывать, бесполезно. Так они и не вызовутся: RTFM shortcut boolean evaluation. ИнсомниаКак-то не сильно улучшилось в плане удобности написания/редактирования/чтения... Да и строковые константы вручную писать опять же... А в чём проблема? Боишься пальцы стереть? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Посмотри как сделано и используется RaiseLastOSError, например. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.07.2018, 23:10
|
|||
|---|---|---|---|
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
ИнсомниаА если у меня "цепочка" не из трёх, а их трёх десятков функций?Если 3 десятка - то 3 десятка строк call( func(..) ). Если переменное кол-во - то можно подумать о двумерном массиве указателей на функции и структуры их параметров. И в цикле вызывать, пока GoodResult возвращают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2018, 08:33
|
|||
|---|---|---|---|
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
Dimitry SibiryakovТак они и не вызовутся: RTFM shortcut boolean evaluation. Может он отключил, пока руки чесались и теперь переживает. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2018, 10:02
|
|||
|---|---|---|---|
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2018, 10:36
|
|||
|---|---|---|---|
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
Василий 2Как-то так. Не проверял. Код: 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. Вы насоветуете. А потом кому-то этот феерический трындец сопровождать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.07.2018, 16:40
|
|||
|---|---|---|---|
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
schi, это уже за рамками вопроса... Вообще самый лучший вариант это автор Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.07.2018, 23:46
|
|||
|---|---|---|---|
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#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. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. С MMX Code Explorer 30 функций обернуть - несколько мин. Виртуальность, одинаковые сообщения, одинаковая сигнатура итд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.07.2018, 00:46
|
|||
|---|---|---|---|
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
Букв можно сократить. Что-то вроде Script.AddFunc3(CERROR_CODE, FuncA, 6, 6, 6, 'Error Message'); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.07.2018, 00:47
|
|||
|---|---|---|---|
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
Или, даже Script.AddFunc<integer, string>(CERROR_CODE, FuncW, 888, 'String Param', 'Error Message'); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.07.2018, 11:36
|
|||
|---|---|---|---|
Как бы вызывать цепочку функций с проверкой каждого шага на возврат кода ошибки? |
|||
|
#18+
Или Код: pascal 1. 2. 3. 4. 5. Тогда и Script не нужен А если объявить такой класс и функцию Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. то можно делать в модной манере цепочкования Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2040654]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 457ms |

| 0 / 0 |
