|
|
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
Здравствуйте эксперты по Delphi!. Мне потребовалось написать такой XML генератор, который работает очень быстро. Но не знаю где допускал ошибку. Версия Delphi 6. (Я вынужден написать на Delphi 6. Другого выхода нет.) Какие ошибки: - под ОС Win 7 : AccessViolation; - под ОС Win XP : медленно работает; Я думаю все с PChar. Уважаемые эксперты, посмотрите на мой код: TXMLWriter Код: 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. Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 08:28:13 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 08:33:00 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
Очень нужна ваша помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 09:02:22 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
Измените Grow типа: Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 10:13:19 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
AlimkulovОчень нужна ваша помощь! Лучше возьми NativeXml и не изобретай велосипед. Бесплатно, доступно для Д6 и легко в освоении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 10:14:12 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
1. А в дебаггере на какой именно строке вылетает Access Violation? Потому что у меня на XE2 и Windows 7 не воспроизводится (скопировал код из btn1Click в консольное приложение). 2. Не по теме, но если вам важна скорость, то ИМХО вместо FBuffer и FLength сделать FBuffer, FCursor, FLast: PChar, примерно так: Код: pascal 1. 2. 3. 4. 5. 6. 3. Есть ли объективная причина везде использовать PChar?.. Если не планируется выносить код в DLL, то может всё-таки string? А в коде, соответственно: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 10:17:53 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
alekcvp вместо FBuffer и FLength сделать FBuffer, FCursor, FLast: PChar Спасибо за предложения. Как решу проблему, обязательна так и делаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 10:33:01 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
AlimkulovЗдравствуйте эксперты по Delphi!. Мне потребовалось написать такой XML генератор, который работает очень быстро. быстрее writeln вряд ли что-то создает xml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 10:33:13 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
Softologic, Спасибо за совет! NativeXml соответствует ли требованиям (сверхлимитный скорость)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 10:36:54 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
alekcvp1. А в дебаггере на какой именно строке вылетает Access Violation? Не могу ловить строку AccessViolation. То OpenElement, в другой раз на WriteAttribute и.т.д. Логировал в Grow и как NewCapacity получает значение свыше 2000000, везде AccessViolation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 10:45:34 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
alekcvp3. Есть ли объективная причина везде использовать PChar?.. Если не планируется выносить код в DLL, то может всё-таки string? [/src] Да конечно. Можно и так. Переделаю как вы указали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 10:48:39 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
AlimkulovSoftologic, Спасибо за совет! NativeXml соответствует ли требованиям (сверхлимитный скорость)? а лимит какой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 11:39:28 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
Alimkulovalekcvp1. А в дебаггере на какой именно строке вылетает Access Violation? Не могу ловить строку AccessViolation. То OpenElement, в другой раз на WriteAttribute и.т.д. Логировал в Grow и как NewCapacity получает значение свыше 2000000, везде AccessViolation. А если сразу выделить, скажем, 4194304 (4 Mb), и увеличивать не по $200, а по $400000 - будут AV? Еще вариант, подключить к тестовому проекту FastMM4 - с ним тоже AV? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 11:41:15 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
мне кажется, что не стоит бесконечно наращивать буфер, у тебя сильно дефрагментируется память ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 11:44:59 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
defecator, Я думал NativeXml формирует DOM, а на это уходить много времени. А у меня задача: генерировать XML который объем свыше 50 mb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 11:49:00 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
defecatorмне кажется, что не стоит бесконечно наращивать буфер, у тебя сильно дефрагментируется память Какой вариант предлагаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 11:51:26 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
Alimkulovdefecator, Я думал NativeXml формирует DOM, а на это уходить много времени. А у меня задача: генерировать XML который объем свыше 50 mb. возьми его и не парься ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 11:56:53 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
Alimkulovdefecatorмне кажется, что не стоит бесконечно наращивать буфер, у тебя сильно дефрагментируется память Какой вариант предлагаете? Зависит от того, что потом планируется делать с данными в буфере. Можно писать буфер на диск и использовать старый буфер повторно для новой порции данных, можно выделять новый буфер и писать новую порцию в него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 12:01:12 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
Grow измени, бладж! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 12:16:43 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
Alimkulov, Я не знаю, почему у тебя AV, но я знаю, что ты достаточно долго мучаешься с памятью: реаллоки, проверки. Тебе нужно умно писать на диск, т.е. через буфер. Тебе поможет библиотека CachedBuffers, там есть отдельный класс для файлов и есть высокоуровневой метод Write. Ты сможешь записывать как отдельно символы, так и строки. Если в перспективе ты захочешь писать не только в UTF-8, но и в других кодировках, тогда тебе понадобится CachedTexts - там фишка в том, данные пишешь в одной кодировке, а на диск они кладутся в нужной тебе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 12:47:26 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUAlimkulov, Я не знаю, почему у тебя AV, но я знаю, что ты достаточно долго мучаешься с памятью: реаллоки, проверки. Тебе нужно умно писать на диск, т.е. через буфер. Тебе поможет библиотека CachedBuffers, там есть отдельный класс для файлов и есть высокоуровневой метод Write. Ты сможешь записывать как отдельно символы, так и строки. Если в перспективе ты захочешь писать не только в UTF-8, но и в других кодировках, тогда тебе понадобится CachedTexts - там фишка в том, данные пишешь в одной кодировке, а на диск они кладутся в нужной тебе. ему не надо тащить очередного монстра в проект, достаточно NativeXML ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 12:53:38 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
defecator, CachedBuffers меньше NatuveXml-я. Значительно. И дополнительных библиотек типа Classes не юзает. Совместим с KOL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 12:56:26 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUdefecator, CachedBuffers меньше NatuveXml-я. Значительно. И дополнительных библиотек типа Classes не юзает. Совместим с KOLзато NativeXML выполняет то, что нужно ТС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 13:10:53 |
|
||
|
Работа с PChar
|
|||
|---|---|---|---|
|
#18+
defecator, Нет, он пишет в память. И выполняет тонну проверок и преобразований, которые в случае ТС скорее всего не нужны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2017, 13:17:52 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39474028&tid=2042126]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
209ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 583ms |

| 0 / 0 |
