|
|
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
wadman, всё с этого началось 21126824 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 15:18 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
YuRock, Ok! Макнули. Ушел читать матчасть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 15:49 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
Михаил Евгеньевич, Harvey-Многопоточность, как это делается в Delphi(2002) Там указано, что крит.секции не работают с VCL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 15:54 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
Сюзанна, Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 16:00 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
СюзаннаТам указано, что крит.секции не работают с VCL Не знаю, что где указано. "крит. секции" везде и со всем работают, ели их использовать. А VCL их не использует, как и каких-либо других средств синхронизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 16:03 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
YuRockСюзаннаТам указано, что крит.секции не работают с VCL Не знаю, что где указано. "крит. секции" везде и со всем работают, ели их использовать. А VCL их не использует, как и каких-либо других средств синхронизации.Synchronize ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 18:06 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)YuRockпропущено... Не знаю, что где указано. "крит. секции" везде и со всем работают, ели их использовать. А VCL их не использует, как и каких-либо других средств синхронизации.Synchronize Я ждал этого поста :) Synchronize - метод класса TThread. Если считать TThread частью VCL, то, конечно, да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 18:15 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
YuRockЕсли считать TThread частью VCL, то, Но, к счастью, так даже разработчики дельфИ не считают и поместили Classes.pas в папку Rtl\Common, а не в папку VCL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 18:20 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
Vizit0rпо таймеру обновляю один из журналов в окне. Из других потоков скидывают в TList строки для добавленияЗачем по таймеру, зачем TList, зачем Critical... На, балуйся: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 18:23 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
YuRock> Synchronize - метод класса TThread. Если считать TThread частью VCL Не хотелось встревать в Вашу высоконаучную дискуссию, но во-первых, "Synchronize" можно сделать и без TThread, а во-вторых, "если считать TThread частью VCL" - это щас серьёзный вопрос был или юмор такой? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 18:24 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам"а во-вторых, если считать TThread частью VCL" - это щас серьёзный вопрос был или юмор такой? Во-вторых, это не вопрос был, а речь шла о VCL. А во-первых, речь шла о средствах синхронизации данных между разными потоками. Так или иначе, Synchronize таким средством не является - он "ставит задание в очередь" на выполнение функции в другом (гуишном) потоке, а не предоставляет монопольный доступ к данным, как это делают средства синхронизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 18:39 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
С VCL-ными визуальными компонентами нельзя из потока работать. Необходимо передавать данные в основной, а уже оттуда в компоненты грузить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 20:18 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
JaDi, С некоторыми свойствами VCL компонентов работать из не основного потока можно. Особенно на чтение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 20:20 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
YuRockГаджимурадов Рустам"а во-вторых, если считать TThread частью VCL" - это щас серьёзный вопрос был или юмор такой? Во-вторых, это не вопрос был, а речь шла о VCL. А во-первых, речь шла о средствах синхронизации данных между разными потоками. Так или иначе, Synchronize таким средством не является - он "ставит задание в очередь" на выполнение функции в другом (гуишном) потоке, а не предоставляет монопольный доступ к данным, как это делают средства синхронизации.я бы сказал у вас довольно узкое представление о средствах синхронизации. кстати, я в корне не согласен с тем куда его поместили, либо на крайний случай как его назвали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 21:50 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
Если никто не против, отвечу автору)) Пожалуй, ничего тупее, чем делать Delete(0) в цикле, придумать нельзя. Нормальные варианты: - удалять строки путем копирования Memo.Text во временный StringList, обработка данных там и возврат готового результата обратно в Memo.Text (Undo ведь не надо в Memo, которое read only) - добавлять строки в начало списка (не надо мудохаться с прокруткой) - использовать для лога ListBox/ListView/VirtualTree (в виртуальном режиме это будет работать мгновенно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 21:56 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)узкое представление о средствах синхронизацииданных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 21:58 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
rgreatJaDi, С некоторыми свойствами VCL компонентов работать из не основного потока можно. Особенно на чтение.С какими, например? Да сами объекты же компонентов могут перестать существовать во время доступа к ним не из гуи-потока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 22:00 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
rgreat, можно то можно, но сегодня можно, завтра ищем баги - порочная практика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2018, 22:40 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
YuRockС какими, например? Код: pascal 1. вполне рабочая практика для многих случаев. Да сами объекты же компонентов могут перестать существовать во время доступа к ним не из гуи-потока. К таким обращатся не надо. По меньшей мере не убедившись в их наличии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 00:09 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
Вообще потоки почти всегда надо убивать до того как помрет GUI который их использует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 00:38 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
rgreat, Да понятно, что бывают случаи, когда что-то более менее безопасно. Но со временем получается наступать на грабли. rgreat Код: pascal 1. Наверняка использует свойство Handle для посылки BM_GETCHECK. И если это произойдет до момента, когда окно уже создано (объект-то уже давно создан, но HandleAllocated=False), то получим CreateWindow, вызванный не в том потоке, распихивание хендлов по всяким глобальным несинхронизированным массивам не в том потоке,... В общем - полный крах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:06 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
rgreatВообще потоки почти всегда надо убивать до того как помрет GUI который их использует.Это понятно, это обязательно даже в случае строгого НЕобращения к VCL-объектам из доп. потока. Такова логика - поток запустился после появления окон - значит и завершиться должен до закрытия окон, на внешний вид которых он влияет (и/или от которых зависит). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 01:10 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#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. На экстрим-тестах с добавлением по 15-20 к сообщений в каждый апдейт (а таймер на 200 мс стоит) - форма почти незаметно дергается при перетаскивании. При обычной работе с окном (не перетаскивании) подлагивания вообще не видны. Что и требовалось. fd00ch >>- удалять строки путем копирования Memo.Text во временный StringList, обработка данных там и возврат готового результата обратно в Memo.Text (Undo ведь не надо в Memo, которое read only) для FMX сделано почти так, только без ненужного SL. Для VCL заметно быстрее работает через замену кучи строк за раз (см. код) >>- добавлять строки в начало списка (не надо мудохаться с прокруткой) тяжелое наследие :) Пробовал пару лет назад изменить, юзвери в один голос просили вернуть обратно, ибо привычно! >>- использовать для лога ListBox/ListView/VirtualTree (в виртуальном режиме это будет работать мгновенно)[/quot] Неудобно. В Memo можно быстро и легко копировать, удалить лишние строки и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 10:43 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
YuRockrgreatJaDi, С некоторыми свойствами VCL компонентов работать из не основного потока можно. Особенно на чтение.С какими, например? Да сами объекты же компонентов могут перестать существовать во время доступа к ним не из гуи-потока. Тот же memo -- будет сыпаться разными AV при попытке писать в него из других потоков, например, те же логи (и чем больше/чаще пишутся в него данные -- тем больший шанс словить проблемы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 10:52 |
|
||
|
Добавление и удаление строк в TStringList
|
|||
|---|---|---|---|
|
#18+
JaDiТот же memo -- будет сыпаться разными AV при попытке писать в него из других потоков а можно подробнее? Лучше пошагово, при каком способе добавления, и каков механизм возникновения AV при этом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2018, 14:37 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39588709&tid=2041311]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 468ms |

| 0 / 0 |
