|
|
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
Понадобилось написать процедуру для добавления элемента в массива. Как по феншую правильнее, передать параметром переменную-массив или пойнтер на него? ================= Док. Win7 Ultim x64/Deb 8.7 i386: FB 3.0.2.32703, диалект 3, SS(win)/SC(Deb), Lazarus 1.9(r.55042); FPC 3.1.1 (r.36290), IBX by -Rik-; IBE 2017.4.19.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:43:00 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
Док, по феншую переменная-массив и есть пойнтер на него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:49:32 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
Bred eFeM, я не зря заострил внимание на слове феншуй Я знаю, что это одно и то же. Как настоящие пац программисты пишут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:51:21 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
ДокКак настоящие пац программисты пишут? От задачи зависит. Задача же не в том, чтобы передать массив, это лишь вариант её реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:53:31 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
Док, Зависит от того, что хочешь получить. Есть открытые массивы, как параметр. Можно фиксированной длинны, но целиком в стек запихать. А можно и поинтер, можно и динамический. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:54:58 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
wadman, т.е. с пойнтерами проще ошибиться и кода больше. Тогда предпочту переменную :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:55:14 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
DesWind, у меня динамический Код: pascal 1. 2. 3. 4. 5. 6. 7. Вообщем-то реализовал и так, и так. Оба способа рабочие. Но поинтересовался на всякий, что моветону не случилось :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:58:34 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
Док, packed record, сделай так: Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:13:32 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
ДокDesWind, у меня динамический Код: pascal 1. 2. 3. 4. 5. 6. 7. Вообщем-то реализовал и так, и так. Оба способа рабочие. Но поинтересовался на всякий, что моветону не случилось :) Упаковать можно так, всё это дело весит 9 байт ... Поинтер на Int64 и Extended обязательны! Эти типы очень медленно работают при выравнивании Код: 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. А дальше можно написать уже функции по работе Код: 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. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:15:07 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
Bred eFeMДок, packed record, сделай так зашел уточнить, а тут переписывать уже много чего надо. Так и на целый компонент можно написать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:36:05 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
ДокBred eFeM, я не зря заострил внимание на слове феншуй Я знаю, что это одно и то же. Как настоящие пац программисты пишут? Ты зарплату за феншуй получаешь ? Просто интересно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:44:14 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
schi, В человеке коде все должно быть прекрасно... ©. Иначе мой перфекционизм не даст мне спать по ночам :) зы. а зарплату я за другое получаю. Пока... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:47:44 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
ДокПонадобилось написать процедуру для добавления элемента в массива. Как по феншую... Феншуйно & инлайново на 100%: Код: pascal 1. 2. А когда нужно в цикле добавить 1000 элементов, то еще и быстро: Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 13:35:27 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
Докschi, ...Иначе мой перфекционизм не даст мне спать по ночам :) С этим спорить безусловно трудно :) А что, в самом Лазарусе нет примеров передачи массива ? Наверное там и есть феншуй, феншуйнее вроде некуда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 13:53:33 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
Если возникает вопрос регулярного добавления/удаление элементов из массива, то, обычно, логичнее использовать TList<T> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:42:17 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Если возникает вопрос регулярного добавления/удаление элементов из массива, то, обычно, логичнее использовать TList<T> +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:50:40 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
чччДФеншуйно & инлайново на 100% а если тебе надо вставить третий элемент? :) schiА что, в самом Лазарусе нет примеров передачи массива ? не нашел. _Vasilisk_логичнее использовать TList<T> это Лазарь, не дельфи зы. короче, можно топ закрыть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 15:05:22 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
Док_Vasilisk_логичнее использовать TList<T> это Лазарь, не дельфи В дельфи это есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 15:25:06 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
Докэто Лазарь, не дельфиТогда чуть более геморройно. TList + GetMem/FreeMem на добавление/удаление элементов. Я в D2006 так делал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 15:28:51 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_+ GetMem/FreeMemА если элемент влазит в SizeOf(Pointer), то обычным кастом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 15:30:38 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
ДокчччДФеншуйно & инлайново на 100% а если тебе надо вставить третий элемент? :) ... Просто в этом случае старайся не использовать массивы. Если "на выходе" все же требуется массив - сформируй его в момент, когда все данные уже стабильны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 15:31:45 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_GetMem/FreeMem_Vasilisk_то обычным кастомне забывая про инициализацию/финализацию управляемых типов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 15:31:52 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_TList + GetMem/FreeMem Это еще более геморройнее, чем работа с указателями. Лучше не преумножать сущности без необходимости :) НяшикВ дельфи это есть у меня Лазарь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 15:34:25 |
|
||
|
Передача массива параметром
|
|||
|---|---|---|---|
|
#18+
Док, У меня код Код: pascal 1. 2. 3. бросал Out of memory. При этом код Код: pascal 1. работал на ура ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 15:34:52 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39472191&tid=2042143]: |
0ms |
get settings: |
6ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
221ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 579ms |

| 0 / 0 |
