|
|
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
чччД, во, спасибо. Завтра, когда моск включится, посмотрю твой код. Очень интересная реализация. зы. Вариант с временным файлом у меня давно реализован. Хочу уйти от него, т.к. могут быть потенциальные проблемы с правами на запись и проч.проч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2017, 22:37:07 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#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. Чую, где-то косяк при передаче парамметров в WM_AddStreamParam_Msg. В Memo отображается "????", картинка пустая. ЧЯДНТ? зы. архив приложил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 16:30:02 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
Док, Навскидку вроде я не заметил огрехов. Но мне непонятно другое - зачем такой огород, почему тип нужных данных не передавать сразу в Stream хотя бы через Integer то есть, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. К чему все эти сообщения и прочий геморрой ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 16:56:43 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
schiК чему все эти сообщения и прочий геморрой ? тут дело в постановке задачи. Скажем так, в данном случае, мне нужно передать массив байтов (или указатель на TMemoryStream, все равно его экземпляр будет жить до окончания жизни доп.потока) в доп.поток и вернуть его обратно. Т.о. образом я смогу, когда надо, передать blob в доп.поток (скажем, при записи в таблицу), а когда надо - передать blob в основной поток (например, при чтении из БД). зы. если ты смотрел сорцы приложенного архива, там есть вариант прямого копирования из контейнера в контейнер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 17:25:43 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
ДокschiК чему все эти сообщения и прочий геморрой ? тут дело в постановке задачи. Скажем так, в данном случае, мне нужно передать массив байтов (или указатель на TMemoryStream, все равно его экземпляр будет жить до окончания жизни доп.потока) в доп.поток и вернуть его обратно. Т.о. образом я смогу, когда надо, передать blob в доп.поток (скажем, при записи в таблицу), а когда надо - передать blob в основной поток (например, при чтении из БД). зы. если ты смотрел сорцы приложенного архива, там есть вариант прямого копирования из контейнера в контейнер. Смотрел, но не разбирался. Относительно потоков и прочих массивов - у всех потоков в процессе память общая, указатели можно передавать туда и сюда. Для blob'в хорошо подходят Stream-ы потому что их уже поддерживают blob-поля. Вот честно не понимаю, в чем проблема, с передачей разного рода объектов между потоками (да и между процессами тоже) имею дело давно, поэтому возможно чего-то у тебя не понимаю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 17:53:04 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
schiВот честно не понимаю, в чем проблема Хорошо, покажи (хотя бы схематично), как ты передаешь блобы из главного в доп. поток (если пишешь в базу) или из доп.потока в основной поток (если читаешь). Я с этим вопросом только начал разбираться, не совсем вкурил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 18:00:34 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
хех, голова садовая, забыл Execute доп.потока показать Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. schi, глянь, плз, корректно ли я передаю параметры в основной поток и корректно ли там их принимаю Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 18:08:54 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
ДокschiВот честно не понимаю, в чем проблема Хорошо, покажи (хотя бы схематично), как ты передаешь блобы из главного в доп. поток (если пишешь в базу) или из доп.потока в основной поток (если читаешь). Я с этим вопросом только начал разбираться, не совсем вкурил Работа с базой: 20743953 между потоками передается указатель на некий контекст (AContext в коде), это запись, одно из полей которой - указатель на Stream. Разумеется, я опустил синхронизацию, но полагаю, что это азы. Докглянь, плз, корректно ли я передаю параметры в основной поток и корректно ли там их принимаю На мой беглый взгляд корректно, но почему бы тебе не сделать логирование и самому посмотреть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 18:58:20 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 19:20:36 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
С такой добавкой, а то не дописал - некрасиво, что не освобождается входящий стрим: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 20:45:10 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
schi, все, спасибо тебе большое - разобрался. В случае с передачей массивов байтов ошибка была в том, что Код: pascal 1. 2. 3. передавался 0, а не значение msg.wParam Переделал на твой вариант, тоже все зафурычило, только кода меньше Еще раз спасибо за познавательный код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 23:30:56 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
приаттачу проект для идущих следом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 23:36:18 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
schi, Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2017, 00:52:12 |
|
||
|
Lazarus: передача blob, как параметра, внутрь и наружу TThread
|
|||
|---|---|---|---|
|
#18+
чччДschi, Код: pascal 1. 2. Чтобы ты желтым выделил (Привычка у меня осталась при работе с TMemoryStream задавать ему размер) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2017, 10:07:46 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39511820&tid=2041886]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
82ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 399ms |

| 0 / 0 |
