|
|
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Процедура выполняет цикл обращения к базе, и в каждой итерации пытается обновлять прогресс-бар. Но он не движется. Лишь после окончания всего цикла бар обновляется и оказывается заполненным на 100%. Код: 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. Вот например процедура обновления Position бара: Код: pascal 1. 2. 3. 4. 5. Результат на скриншотах (вначале бары полностью пустые, потом полностью заполнены, пошаговый прогресс не отображается). Напрашивается решения - засунуть в поток. Но что именно? Само окно с прогресс-барами или всю верхнюю процедуру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 18:16 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
вот в конце что отображается: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 18:16 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Я не вижу где вы вызываете этот SetPosition3(). Вызов ProcessMessages() всей Application может быть излишним, попробуйте обойтись вызовом Repaint() окне содержащей ProgressBar (хотя по идее оно и само должно вызывать). Не совсем понятно - используются ли потоки сейчас? Версия Делфи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 18:40 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladНапрашивается решения - засунуть в поток. Но что именно? Само окно с прогресс-барами или всю верхнюю процедуру? Ответ очевиден: всю верхнюю процедуру. Поскольку окнами должен владеть только один поток. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 18:43 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad Код: pascal 1. 2. Надо так: Код: pascal 1. 2. Выкрутка сообщений и не должна принудительно перерисовывать окна. Это делает функция UpdateWindow - send'ом присылает WM_PAINT с накопившимся инвалидированным прямоугольником. Если это не поможет - значит ошибка в логике кода (я его не смотрел). А вообще, естественно, надо переносить тяжелую работу в доп. поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 19:13 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
логика работы с прогрессами должна быть такой в главном потоке просто отображается форма и прогресс-бар в доп потоках проходит работа по обмену данными и время от времени в синхронизации дергается установка значений прогресса когда поток заканчивается, он приходит в обработчик OnTerminate и закрывает окно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 21:30 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
QTЯ не вижу где вы вызываете этот SetPosition3(). Вызов ProcessMessages() всей Application может быть излишним, попробуйте обойтись вызовом Repaint() окне содержащей ProgressBar (хотя по идее оно и само должно вызывать). Не совсем понятно - используются ли потоки сейчас? Версия Делфи? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Сейчас потоки не используются. Delphi 2010. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 23:45 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
YuRocksvnvlad Код: pascal 1. 2. Надо так: Код: pascal 1. 2. Не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2018, 23:50 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
krapotkinлогика работы с прогрессами должна быть такой в главном потоке просто отображается форма и прогресс-бар в доп потоках проходит работа по обмену данными и время от времени в синхронизации дергается установка значений прогресса когда поток заканчивается, он приходит в обработчик OnTerminate и закрывает окно Можно ли окно создать внутри конструктора потока, до запуска Start? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 06:04 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 08:39 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladМожно ли окно создать внутри конструктора потока, до запуска Start? Можно, но без VCL. Тогда поток будет честно обрабатывать в себе сообщения извне для этого окна. Но это не для тебя, т.к. твой поток будет все время занят. В общем, придется программировать. Окно создавать вне потока, а поток будет сообщать о своем прогрессе, как и положено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 08:41 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladYuRockпропущено... Надо так: Код: pascal 1. 2. Не помогает.Перед Update еще Invalidate надо, я забыл, или сразу Repaint - он и то и то вызовет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 09:58 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmansvnvladМожно ли окно создать внутри конструктора потока, до запуска Start? Можно, но без VCL. Тогда поток будет честно обрабатывать в себе сообщения извне для этого окна. Но это не для тебя, т.к. твой поток будет все время занят. В общем, придется программировать. Окно создавать вне потока, а поток будет сообщать о своем прогрессе, как и положено.Ну почему, конструктор же - это еще главный поток. Можно, конечно. А вот в execute уже будет долгая операция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 10:02 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
YuRockНу почему, конструктор же - это еще главный поток. Какой тогда смысл в этом окошке? Я просто смотрю в ХШ. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 10:03 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
YuRocksvnvladпропущено... Не помогает.Перед Update еще Invalidate надо, я забыл, или сразу Repaint - он и то и то вызовет. Нафига ? SetPosition у ProgressBar и так объявляет недействительным нужные части окна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 10:09 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#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. Попробуй логировать ChangedCount при вызовах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 10:34 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
По теме. Если надо именно окошко в отдельном thread их есть у меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 10:43 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Докsvnvlad, ты, вроде, уже тут наспрашивал на 4 страницы. Мало? Вы что-то путаете. Я на тот форум не заходил.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 14:25 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmanYuRockНу почему, конструктор же - это еще главный поток. Какой тогда смысл в этом окошке? Я просто смотрю в ХШ. :) Эээ... отображать прогресс цикла выполнения SQL-запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 14:27 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#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. Попробуй логировать ChangedCount при вызовах Все правильно. При sleep или точках останова все обновляется. Но попробуйте вызвать обновление изнутри цикла выполнения SQL-запросов - все время потока занимают SQL-запросы, VCL не успевает обновляться. То ли сообщения не доходят, то ли не считает нужным немедленно на них реагировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 14:29 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Ну и добавь invalidate и sleep, раз в N-дцать записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 14:36 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladТо ли сообщения не доходят, то ли не считает нужным немедленно на них реагировать. Создал модальное окно, запустил поток. Поток шлет свой счетчик этому окну. Поток закончился, окно закрылось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 15:07 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Было, делал... Модальное окно, которое по таймеру читало из БД значение прогресса. т.к. Процедура была на той стороне, да ещё и в много потоков запускалась ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 15:17 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
zinpubНу и добавь invalidate и sleep, раз в N-дцать записей Нет, все бесполезно, и sleep, и Repaint, и Application.ProcessMessages делал, не помогает. Лучше напишу поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 15:22 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Проблема в чём то ином, ProcessMessages для прогрессбара вполне достаточно, хотя и кривовато ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 15:47 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
А вот таким образом правильно будет по завершении работы потока получить из него результат выполнения (id первой обновленной записи)? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Или такой код приведет к открытию потока и немедленному его уничтожению? Если что, код самого Create примерно такой: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 15:51 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
В общем нужно после отрабатывания всех SQL-запросов, которые засунуты в поток (после завершения работы потока), обновить основную сетку с данными и позиционировать курсор (Locate) на ту запись, id которой будет храниться внутри потока. Как это грамотно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 15:55 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladКак это грамотно сделать? Посмотри туда https://github.com/wadman/wthread ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 15:57 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladzinpubНу и добавь invalidate и sleep, раз в N-дцать записей Нет, все бесполезно, и sleep, и Repaint, и Application.ProcessMessages делал, не помогает. Лучше напишу поток. Куда тебе еще поток, ты прогрессбаром разобраться не можешь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 17:05 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Изначально вопрос был про ProgressBar. И вот этот пример кода показывает, что ProgressBar нормально отображается и без потоков и без каких-либо ProcessMessages() / Repaint() / Update() / Invalidate(). Надо смотреть подробнее. Сделайте вывод в логи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 17:12 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
schiYuRockпропущено... Перед Update еще Invalidate надо, я забыл, или сразу Repaint - он и то и то вызовет. Нафига ? SetPosition у ProgressBar и так объявляет недействительным нужные части окна.Если так (что логично и скорей всего, просто нет щас уозможности исходники посмотреть) - тогда не надо. Значит, ошибка в логике, и тогда ничего не поможет, кроме исправления её. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 22:32 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladТо ли сообщения не доходят, то ли не считает нужным немедленно на них реагировать.Нет, всё всегда работает в соответствие с жокументацией по винапи. За исключением редких багов, которые в основном давно вылизаны и пофикшены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 22:35 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
zinpubНу и добавь invalidate и sleep, раз в N-дцать записейслип бесполезен, а инвалидэйта мало - нужен апдейт. Так говорит документация, а жизнь показывает, что она не врет в данном случае. Так что тыкать пальцем в небо - просто потеря времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 22:37 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
zinpubПроблема в чём то ином, ProcessMessages для прогрессбара вполне достаточно, хотя и кривоватоНе достаточно, винда пошлет WM_PAINT только после того, как очередь освободится, а надо сразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 22:38 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
YuRockzinpubПроблема в чём то ином, ProcessMessages для прогрессбара вполне достаточно, хотя и кривоватоНе достаточно, винда пошлет WM_PAINT только после того, как очередь освободится, а надо сразу.Даже точнее так: после ProcessMessages винда пошлет WM_PAINT через PostMessage (добавит в очередь), но обработка этого сообщения не начнется сразу, т.к. пойдет выполнение дальнейшего кода программы, в итоге - окно с прогрессбаром не перерисуется (когда надо). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 22:43 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
YuRockYuRockпропущено... Не достаточно, винда пошлет WM_PAINT только после того, как очередь освободится, а надо сразу.Даже точнее так: после ProcessMessages винда пошлет WM_PAINT через PostMessage (добавит в очередь), но обработка этого сообщения не начнется сразу, т.к. пойдет выполнение дальнейшего кода программы, в итоге - окно с прогрессбаром не перерисуется (когда надо). Все правильно. КотовасияКуда тебе еще поток, ты прогрессбаром разобраться не можешь... Сами попробуйте обновлять прогрессбар в цикле MySQL. Сто раз уже такое встречал, что замораживается до конца цикла, просто руки не доходили основательно решить вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 22:57 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#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. Попробуй логировать ChangedCount при вызовах Вот вывод с "логированием" - логирование осуществляется вызовом функции ShowMessage. Как и ожидалось, все отображается. И не нужны даже Update с ProcessMessages. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 23:09 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Вторая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 23:09 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Третья ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 23:10 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 23:10 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
И это немудрено, во время висения диалоговых ShowMesage-й у программы достаточно времени, чтобы обработать все сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 23:12 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad... КотовасияКуда тебе еще поток, ты прогрессбаром разобраться не можешь... Сами попробуйте обновлять прогрессбар в цикле MySQL. Сто раз уже такое встречал, что замораживается до конца цикла, просто руки не доходили основательно решить вопрос. Вот тебе код, повесь его "на кнопку", попробуй - заработает ли. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Если заработает - замени sleep(100) на свою работу с mySQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2018, 23:13 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
тут вроде в правилах нет ограничений на ссылки я писал статью , где ваш случай подробно описан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 08:38 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Котовасияsvnvlad... пропущено... Сами попробуйте обновлять прогрессбар в цикле MySQL. Сто раз уже такое встречал, что замораживается до конца цикла, просто руки не доходили основательно решить вопрос. Вот тебе код, повесь его "на кнопку", попробуй - заработает ли. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Если заработает - замени sleep(100) на свою работу с mySQLВряд ли заработает. Тут та же проблема, что и у ТС, идентичная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 09:19 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad Код: 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. выбросить код slow-by-slow и написать sp-процедуру предлагали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 11:05 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
YuRockYuRockпропущено... Не достаточно, винда пошлет WM_PAINT только после того, как очередь освободится, а надо сразу.Даже точнее так: после ProcessMessages винда пошлет WM_PAINT через PostMessage (добавит в очередь), но обработка этого сообщения не начнется сразу, т.к. пойдет выполнение дальнейшего кода программы, в итоге - окно с прогрессбаром не перерисуется (когда надо). https://docs.microsoft.com/en-us/windows/desktop/controls/create-progress-bar-controls Нет никаких Invalidate, Update и прочих действий. Где-то я читал (не найду сейчас), что ProgressBar отличается от остальных контролов тем, что при установке позиции он сам вызывает UpdateWindow ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 11:39 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
YuRockКотовасияпропущено... Вот тебе код, повесь его "на кнопку", попробуй - заработает ли. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Если заработает - замени sleep(100) на свою работу с mySQLВряд ли заработает. Тут та же проблема, что и у ТС, идентичная. Это рабочий код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 12:21 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
КотовасияYuRockпропущено... Вряд ли заработает. Тут та же проблема, что и у ТС, идентичная. Это рабочий код. Шаман однако. На кнопке код работал. Попробовал встроить в SQL-цикл. Тоже показал прогресс. Затем закомментировал этот код и оставил свой код как было, убрал даже ProcessMessages и Repaint где они были. Все заработало нормально. В коде НИЧЕГО не менял. Но вчера он не работал, а сегодня работает. Одно замечание - вчера работало все медленно, сегодня быстро, т.е. связь с сервером лучше. Вчера обработка 3 запросов занимала где-то 3 секунды, сегодня доли секунды. Может быть с этим связано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 23:37 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Даже так - прежде, чем начал тестировать этот код, заметил, что мое окно с прогресс барами работает нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 23:38 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Вчера день потратил на написание класса Thread-а, а сегодня оказалось, что работает без него. Дельфи издевается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 23:40 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 23:41 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad, не надо сразу сломя голову искать черную кошку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 23:45 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Котовасияsvnvlad, не надо сразу сломя голову искать черную кошку... В смысле? Я вижу, что код нестабилен. Вчера не работало, сегодня работает. Что будет завтра - неизвестно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 23:48 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Предполагаю, что зависание сервера (вернее связи с сервером) мешает работе VCL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 23:49 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladПредполагаю, что зависание сервера (вернее связи с сервером) мешает работе VCL. Это п....ц, дорогая редакция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2018, 23:58 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
andreymxвыбросить код slow-by-slow и написать sp-процедуру предлагали? Что такое slow-by-slow и sp-процедура? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2018, 00:09 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad, это ты плохому от 79850 набрался. Сам он по себе человек хороший, но воспринимать сообщения технического плана от него не нужно, у него интересные взгляды на "внутреннюю реализацию", но они не вполне соответствуют официальным, а широта взглядов по отношению к у уже реализованным техническим системам чревата учащением случаев принятия не всегда верных решений... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2018, 00:12 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
krapotkinя писал статью , где ваш случай подробно описан Простите, но у него как раз нет потоков. :) Он собрался их прикручивать, но они там как бы совсем не нужны. schiГде-то я читал (не найду сейчас), что ProgressBar Уже демонстрировали в теме - само перерисовывается, без дополнительных телодвижений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 10:04 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladКотовасияsvnvlad, не надо сразу сломя голову искать черную кошку... В смысле? Я вижу, что код нестабилен. Вчера не работало, сегодня работает. Что будет завтра - неизвестно. Прикручивание изолентой многопоточности стабильности не добавит. Сколько не встречал таких поделий, а результат такой, что случайно в одном из трех случаев приложение вылетает из системы... так что советую обновить резюме и отгулять накопившийся отпуск перед тем, как делать релиз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 11:47 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
roschinspbsvnvladпропущено... В смысле? Я вижу, что код нестабилен. Вчера не работало, сегодня работает. Что будет завтра - неизвестно. Прикручивание изолентой многопоточности стабильности не добавит. Сколько не встречал таких поделий, а результат такой, что случайно в одном из трех случаев приложение вылетает из системы... так что советую обновить резюме и отгулять накопившийся отпуск перед тем, как делать релиз многопоточность докручивал пару раз в Д7 но там, где действительно показалось нужным 1. для проверки, кто блокирует в Оракле 2. Для выполнения списка длительных Оракле-процедур с возможностью прерывания Работает уже лет 10-12 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 14:14 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
MinGWkrapotkinя писал статью , где ваш случай подробно описан Простите, но у него как раз нет потоков. :) Он собрался их прикручивать, но они там как бы совсем не нужны. schiГде-то я читал (не найду сейчас), что ProgressBar Уже демонстрировали в теме - само перерисовывается, без дополнительных телодвижений. Сегодня опять не перерисовывается. Так что нужны они. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 16:23 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Котовасияsvnvlad, это ты плохому от 79850 набрался. Кто это? Там нет такого пользователя. Заинтриговали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 16:24 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
roschinspbsvnvladпропущено... В смысле? Я вижу, что код нестабилен. Вчера не работало, сегодня работает. Что будет завтра - неизвестно. Прикручивание изолентой многопоточности стабильности не добавит. Сколько не встречал таких поделий, а результат такой, что случайно в одном из трех случаев приложение вылетает из системы... так что советую обновить резюме и отгулять накопившийся отпуск перед тем, как делать релиз Вы просто не умеете их готовить.) У меня в программе код автообновления программы написан на Thread-е. Очень четко и стабильно работает. ("Вы можете продолжать работать во время обновления"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 16:25 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
MinGWОн собрался их прикручивать, но они там как бы совсем не нужны. Уже демонстрировали в теме - само перерисовывается, без дополнительных телодвижений. Есть другая программа, закидывает файлы на сервер обновлений. Там тоже прогрессбар морозится, это не единичный случай. Просто руки не доходят переписать на поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 16:27 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
krapotkinтут вроде в правилах нет ограничений на ссылки я писал статью , где ваш случай подробно описан Спасибо, толково. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 16:28 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Можно ли в Thread-е обращаться на чтение полей из сложных подклассов? Например, читать из диалогового окна параметры без синхронизации? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 16:42 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladМожно ли в Thread-е обращаться на чтение полей из сложных подклассов? В чем проблема передать их в конструктор потока? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 16:45 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmansvnvladМожно ли в Thread-е обращаться на чтение полей из сложных подклассов? В чем проблема передать их в конструктор потока? Ну там несколько разных режимов. В зависимости от режима вызывается своя функция с разными параметрами. Код: pascal 1. 2. 3. 4. 5. Какую функцию вызывать, определяется ответом в диалоговом окне. Причем каждая вышестоящая по тексту функция вызывает в цикле нижестоящую, та в свою очередь еще раз нижестоящую, и уже она вызывает DoChangeOwnerCargoCard (иерархия). Я подумал, что все это сделать в потоке проще, чем извне потока определять или на каждую делать свой класс потока. Может быть сделать 4 конструктора с разными параметрами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 21:39 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad... Уже демонстрировали в теме - само перерисовывается, без дополнительных телодвижений. Сегодня опять не перерисовывается. Так что нужны они.[/quot] Прямо вот этот вот код 21689633 перестал работать? Врешь поди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2018, 22:07 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladВ зависимости от режима вызывается своя функция с разными параметрами. Одна функция с тремя параметрами: тип операции, две id. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 07:28 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad...пошаговый прогресс не отображается... svnvlad...Все заработало нормально. В коде НИЧЕГО не менял... svnvlad...сегодня оказалось, что работает... svnvlad...Сегодня опять не перерисовывается... svnvlad...Вы просто не умеете их готовить.) У меня в программе код автообновления программы написан на Thread-е. Очень четко и стабильно работает. ("Вы можете продолжать работать во время обновления"). Просто у меня нет волшебного календаря, в котором отмечено в какой день какие функции отваливаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 10:46 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Котовасияsvnvlad... Уже демонстрировали в теме - само перерисовывается, без дополнительных телодвижений. Сегодня опять не перерисовывается. Так что нужны они. Прямо вот этот вот код 21689633 перестал работать? Врешь поди.[/quot] Сдался вам вот это код. Я же говорю, все зависит от скорости связи интернет-канала. Когда он быстрый, прогресс обновляется, когда медленный - морозится, и отображается полностью заполненным только в конце работы SQL-запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 05:34 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
roschinspbsvnvlad...пошаговый прогресс не отображается... svnvlad...Все заработало нормально. В коде НИЧЕГО не менял... svnvlad...сегодня оказалось, что работает... svnvlad...Сегодня опять не перерисовывается... svnvlad...Вы просто не умеете их готовить.) У меня в программе код автообновления программы написан на Thread-е. Очень четко и стабильно работает. ("Вы можете продолжать работать во время обновления"). Просто у меня нет волшебного календаря, в котором отмечено в какой день какие функции отваливаются. В те дни, когда связь тормозит, прогресс-бары замораживаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 05:35 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Кстати, актуальная тема: на основной форме имеется 7 DbGrid-ов, часть из которых связаны по типу Master-Detail. Через каждые 90 секунд форма обновляется, чтобы отобразить изменения, если они, возможно, сделаны другим сетевым пользователем. Во время процесса обновления сеток (перечитывания таблиц), отображаются песочные часики, и программа перестает реагировать на любые действия пользователя. И здесь как повезет. В локалке все это происходит достаточно быстро и незаметно. Удаленному же пользователю, который коннектится через интернет, работать не столь комфортно, иногда период заморозки составляет до 10 секунд при плохом соединении. Так вот - можно ли как-то сделать сам процесс перечитывания данных из базы в Thread-е, а уже их отображение - в основном потоке? Думаю, это бы значительно улучшило дружественность программы к пользователям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 05:40 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmansvnvladВ зависимости от режима вызывается своя функция с разными параметрами. Одна функция с тремя параметрами: тип операции, две id. Там, если заметили id то разные. У одной это id карты, у другой - id подтипа груза, у третьей - id номенклатуры, у четвертой - id партии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 05:43 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladwadmanпропущено... Одна функция с тремя параметрами: тип операции, две id. Там, если заметили id то разные. У одной это id карты, у другой - id подтипа груза, у третьей - id номенклатуры, у четвертой - id партии. Это ничего не меняет. Тип операции, старый ид, новый ид. Уж по операции то сумеешь определить, что к чему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 07:37 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmansvnvladпропущено... Там, если заметили id то разные. У одной это id карты, у другой - id подтипа груза, у третьей - id номенклатуры, у четвертой - id партии. Это ничего не меняет. Тип операции, старый ид, новый ид. Уж по операции то сумеешь определить, что к чему? Ну да, можно же присвоить в зависимости от типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 10:17 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladЧерез каждые 90 секунд форма обновляется, чтобы отобразить изменения, если они, возможно, сделаны другим сетевым пользователем ... период заморозки составляет до 10 секунд при плохом соединении. Так вот - можно ли как-то сделать сам процесс перечитывания данных из базы в Thread-е, а уже их отображение - в основном потоке? Думаю, это бы значительно улучшило дружественность программы к пользователям. Ну, капитан Очевидность задал бы вопрос: "Что будет, если 10 пользователей при плохом соединении будут постоянно перечитывать данные?" Как-то процесс перечитывания можно сделать так: Соединение с БД и все запросы должны создаваться и выполняться в самом Thread, можно всё что нужно для TTread вынести в отдельный TDataModule и при чтении создавать и разрушать его. Внутри TThread после загрузки всех наборов данных, копируем их содержимое (см. метод Synchronize) в какие-нибудь наборы данных в памяти (TMemDataSet, TClientDataset и т.п.), которые работают в основном потоке и показываются в гридах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 16:12 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
roschinspbКак-то процесс перечитывания можно сделать так: Я-бы еще добавил после с датой/временем изменения на ключевые таблицы и обновление только по нему делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 16:18 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmanroschinspbКак-то процесс перечитывания можно сделать так: Я-бы еще добавил после с датой/временем изменения на ключевые таблицы и обновление только по нему делал. Можно еще завести спец. поле в которое автоматически заносить текущую дату при любом изменении и читать только те записи в которых значение этого поля больше времени последнего чтения. Но чето подозреваю это слишком сложно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 16:29 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
roschinspbwadmanпропущено... Я-бы еще добавил после с датой/временем изменения на ключевые таблицы и обновление только по нему делал. Можно еще завести спец. поле в которое автоматически заносить текущую дату при любом изменении и читать только те записи в которых значение этого поля больше времени последнего чтения. Но чето подозреваю это слишком сложно... Сам догадался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 16:30 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
roschinspbНо чето подозреваю это слишком сложно... Не совсем. Триггеры, доп.условие в where да обновление измененных записей в памяти. Еще решить, что делать в конфликтных ситуациях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 16:32 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladСегодня опять не перерисовывается. Так что нужны они. Нет. Значит проблема в каком-то другом месте. Может например у вас "1" выполняется 5 секунд, а "2" и "3" выполняются мгновенно? Тогда ProgressBar показывает вполне корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 23:18 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmanroschinspbНо чето подозреваю это слишком сложно... Не совсем Сложно в контексте Сегодня опять не перерисовывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 12:03 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
MinGWsvnvladСегодня опять не перерисовывается. Так что нужны они. Нет. Значит проблема в каком-то другом месте. Может например у вас "1" выполняется 5 секунд, а "2" и "3" выполняются мгновенно? Тогда ProgressBar показывает вполне корректно. Нет, всё равномерно выполняется. Сейчас сделал в треде, все нормально работает, только осталась в конце ближе к уничтожению треда какая-то ошибка доступа 5 вылазит. Но по данным все записывается четко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 19:24 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmanroschinspbКак-то процесс перечитывания можно сделать так: Я-бы еще добавил после с датой/временем изменения на ключевые таблицы и обновление только по нему делал. Там есть такая проверка. Просто само обновление сеток очень долго идет. Даже когда вручную нажимаешь кнопку обновить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 19:26 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, что не так: возникает ошибка Access Violation. Ошибка доступа 5. При работе деструктора на строке FfmProgress.Free; Код: 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. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:18 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad Код: pascal 1. 2. Там что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:34 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadman, Код: 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. Да, и если закомментировать в деструкторе FfmProgress.Free;, то окошко так и остается висеть на экране. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 13:45 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad, а если в конструктор потока передавать уже созданную форму? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 13:47 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladДа, и если закомментировать в деструкторе FfmProgress.Free;, то окошко так и остается висеть на экране. Просто закрывай окно, а в событии OnClose выставь action := caFree. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 13:51 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
goldmi45svnvlad, а если в конструктор потока передавать уже созданную форму? То же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:18 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmansvnvladДа, и если закомментировать в деструкторе FfmProgress.Free;, то окошко так и остается висеть на экране. Просто закрывай окно, а в событии OnClose выставь action := caFree. Теперь нормально. А почему так? Видимое окно нельзя освобождать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:26 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladgoldmi45svnvlad, а если в конструктор потока передавать уже созданную форму? То же самое. Ну и в деструкторе потока не убивать форму, а уничтожать в главном потоке в событии OnTerminate потока.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:29 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladПодскажите пожалуйста, что не так: возникает ошибка Access Violation. Ошибка доступа 5. При работе деструктора на строке FfmProgress.Free; Ну давай думать. Эта строчка у тебя в деструкторе. Деструктор вызывается при уничтожении потока. Уничтожение потока при FreeOnTerminate = true происходит в самом потоке. Итого, операции с формой в левом потоке. Что говорится по этому поводу в VCL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:33 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladwadmanпропущено... Просто закрывай окно, а в событии OnClose выставь action := caFree. Теперь нормально. А почему так? Видимое окно нельзя освобождать? Потому что поток еще "работает" с окном. Поменяй эти две строки местами. svnvlad Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:43 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
softwarerУничтожение потока при FreeOnTerminate = true происходит в самом потоке. Этот момент упустил из виду. В общем, с caFree тогда единственный из простых вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 15:06 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#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. Класс потока: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 16:34 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad, портянки стоит в спойлер прятать. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 20:02 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladВ общем получилось красиво. Если интересно, Мой совет - убрать восклицательные знаки из сообщений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 20:50 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
schiМой совет - убрать восклицательные знаки из сообщений. ... и раскрасить в постельные тона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 23:57 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
у меня в программе окно с прогрессом и выполнение работы с БД в отдельном треде выглядит вот так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Соответственно вся работа с БД идет в отдельном потоке, а в основном отображается окно с анимационной гифкой. Пользуясь случаем, Виктор, еще раз спасибо за помощь :) Выглядит это так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2018, 11:46 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2040313]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
170ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 511ms |

| 0 / 0 |
