|
|
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Добрый день. Помогите, пожалуйста, советом. Есть проверка на лицензию, пусть будет переменная A. Так вот, нужно написать условие в Delphi 6, чтобы к "телу" программа проходила только в том случае, если A>0. Но! Важно и то, чтобы при A<1 программа просто ждала, пока A не будет больше 0; и когда вновь станет больше 0, то снова пойдёт "гулять" по циклу. Это возможно сделать стандартными средствами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 11:20:13 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
RyuuЭто возможно сделать стандартными средствами? Нет, тут программировать надо. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 12:01:33 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Туплю. Решено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 12:03:27 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, если интересно. Код: plsql 1. 2. 3. 4. А дальше собственно цикл, который требует GetXMLFreeLicenseCount > 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 12:05:40 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Отличный пример как не надо делать. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 12:49:23 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Ryuu, Это делается через потоки. Читай про потоки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 12:52:34 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Valery_B, ок. Dimitry Sibiryakov, почему, если закладка просто на всякий случай? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 13:35:23 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Ryuuпочему, если закладка просто на всякий случай? Потому что ProcessMessages и Sleep в одном цикле это ситуация из разряда "либо крестик сними, либо трусы надень". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 13:48:04 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Ryuu, Закладка граблей для последующего наступания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 13:48:58 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
И всё же никто из присутствующих не объяснил причину, почему это "плохо". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 13:52:42 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Ryuu, Какой конкретно результат ожидается от Application.ProcessMessages ? Вот с какой целью эта строчка написана? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 13:55:43 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Leo Pevzner, авторАналогично, программа, выполняющая длительные вычисления, может выглядеть зависшей, так как даже сообщения на перемещение её окна или нажатия на кнопки не будут обработаны, пока вычисления не будут закончены. Поэтому нужно либо выполнять вычисления в отдельном потоке, либо периодически выполнять Application.ProcessMessages. Однако, в этом случае нужно учитывать, что выполнение этого метода несколько тормозит выполнение программы, и его вызов не должен быть слишком частым. Я чего-то не понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 13:59:01 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
RyuuИ всё же никто из присутствующих не объяснил причину, почему это "плохо". Мат пользователей тебе объяснит доходчиво. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 14:01:44 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, супер ответ, другого не ожидал. И это не та программа, где "подвисание" кому-то критично. Им нужно нажать на кнопку и ждать, когда программа выполнится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 14:04:10 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
RyuuLeo Pevzner, авторАналогично, программа, выполняющая длительные вычисления, может выглядеть зависшей, так как даже сообщения на перемещение её окна или нажатия на кнопки не будут обработаны, пока вычисления не будут закончены. Поэтому нужно либо выполнять вычисления в отдельном потоке, либо периодически выполнять Application.ProcessMessages. Однако, в этом случае нужно учитывать, что выполнение этого метода несколько тормозит выполнение программы, и его вызов не должен быть слишком частым. Я чего-то не понимаю? Да. Предположим, что во времы выполнения этого цикла, пользователь нажмет на крестик и приложение получит сообщение WM_CLOSE. Давайте подумаем, что после этого должно произойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 14:18:46 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Leo Pevzner, отвечу вопросом на вопрос, зачем ему это делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 14:35:14 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
RyuuLeo Pevzner, отвечу вопросом на вопрос, зачем ему это делать? Как показывает практика, по отношению к пользователю вопросы "зачем" и "почему" имеют только один ответ: "потому что может" (С). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 15:12:36 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
кстати именно это самый частый вариант для таких программ, где вроде все работает, но как то странно... более того, пользователь сначала еще пару раз нажмет эту же кнопку, потому что может, из-за Application.ProcessMessages и только потом (а в приложении уже к этому времени и так полная разруха) он еще и на крестик надавит и даже не раз, ибо отклика не будет )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 15:45:25 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
все что нужно засовывайте в поток. кнопку - в состояние Enabled:=false; поток может время от времени через Synchronize() обновлять что-нибудь на форме (при этом форма будет абсолютно доступна) в событии потока OnTerminate делайте все что нужно по окончании потока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 15:48:01 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Ryuu, делай, потом нам расскажешь, почему нельзя было. каждый должен набить свои шишки сам. бесполезно кого-то в чем-то убеждать, давно понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 15:54:43 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
RyuuИ всё же никто из присутствующих не объяснил причину, почему это "плохо". Не слушай их, у них просто карго-культ на потоках. Даже там пытаются их втиснуть, где простой обработки очереди достаточно (ProcessMessages). Да, возможны косяки, если на форме "типа параллельно" что-то выполняется, и пользователь захочет что-то еще поделать или даже то же самое запустить -- но даже в этом случае можно без потоков обойтись (включая/отключая элементы интерфейса). Так что не все так так плохо у ProcessMessages, как малюют. Дешего и сердито, а работает для пользователя точно так же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 16:11:22 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
RyuuLeo Pevzner, отвечу вопросом на вопрос, зачем ему это делать? Я обозначил примерное направление, в котором можно покопаться и понять, почему использование ProcessMessages должно быть более осознанным чем то, что вы привели в примере. Если хотите разобраться, покопаетесь и разберетесь, если считаете, что вам это не надо и некорректное поведение программы в некоторых случаях вполне допустимо... ну нет, так нет.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 16:20:46 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDi, я и не собирался их слушать. Но рад, что обсуждение вылилось хоть во что-то осмысленное, а не в упреки без какой-либо аргументации своей позиции с толикой высокомерия. Ps. Все действия до данной строки практически мгновенны, и их мало. Да, там есть один update одной строки, в случае, если он вообще нужен (0.01% вероятность). Так что, свойство "не дам закрыть" сразу, меня более чем устраивает. Они его даже не заметят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 16:39:05 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
RyuuВсе действия до данной строки практически мгновенны, и их мало.Так зачем же тогда там application.processmessages? Хотя бы для себя ответь на этот вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 16:40:26 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Leo Pevzner, я знаю о двух его свойствах. В данном случае, мне важно было озвученное. Первое же, "потоковое", здесь не играет ни какой роли. Другими словами, его применение вполне осмысленное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 16:41:25 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Barmaley57, чтобы программа не считалась "мёртвой", если лицензии долго не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 16:43:08 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Тогда, учитывая это: RyuuИ это не та программа, где "подвисание" кому-то критично. Им нужно нажать на кнопку и ждать, когда программа выполнится.совсем не понятно, зачем так делать. Как уже выше написали могут быть проблемы с отменой подвисшего ожидания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 16:50:05 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Barmaley57, какого рода проблемы? Как раз без этой функции и могут быть проблемы в стиле "программа не отвечает", хотя на самом деле работает, или же я чего-то путаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 16:52:30 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
RyuuКак раз без этой функции и могут быть проблемы в стиле "программа не отвечает", хотя на самом деле работает, или же я чего-то путаю? Похоже, ты этот кусок вообще не тестировал. А зря. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 16:59:55 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Ryuu, зайдем с другой стороны: а возможность отмены длительного ожидания лицензии планировалась в приложении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 17:14:55 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Ryuu, Есть 2 вида людей. Одни уже бэкапятся, а другие еще нет. (с) Зачем вы интересуетесь мнением коммьюнити, если не хототе к нему прислушаться? Вам прямым текстом сказали, что так делать не надо и намекнули почему. Вопрос немного более глубок, чем кажется на первый взгляд. Но если вам хочется пройти долгим путем - да пожалуйста.... Может быть кто-то следующий прочтет этот топик, задумается и это принесет ему пользу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 18:01:34 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Leo Pevzner, Удивляюсь упорству людей делать костыли ) При том, что нормальное решение делается в несколько строк или несколько кликов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 18:09:17 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
makhaon, сделай решение для автора в несколько кликов/строк, раз это так просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 18:10:52 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDimakhaon, сделай решение для автора в несколько кликов/строк, раз это так просто. Делать не буду, но на вскидку: маленькая формочка "ожидание лицензии" с кратким описанием, одной кнопкой "отмена" и таймером на 200-500 мсек, в котором проверяется значение переменной, и по результату выставляется mrOk. "Отмена" соотв-но выставляет mrCancel. Причём если автор уверен, что получение лицензии в 9 случаях из 10 очень быстрое, то можно сделать что-то вроде (псевдокод): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Таким образом будет "залипание" приложения на одну секунду и если за эту секунду лицензия не "прокнет", то будет отображено окно ожидания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 18:31:33 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Правда там предполагается, что значение License меняется где-то в другом потоке. Если в этом же, то лучше сразу форму с таймером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 18:34:40 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
А что если он уже показал формочку, которая не закрывается, но в которой ожидание лицензии по предложенному автором методу, как в этом случае ему может навредить ProcessMessage? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 18:35:41 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
да вы задолбаликак в этом случае ему может навредить ProcessMessage? Будет зря греть процессор. В сочетании с Sleep() вызовет состояние "Not responding" со всеми вытекающими вплоть до автоматического убиения приложения. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 18:48:51 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
alekcvp, И к этих 20 строкам кода надо еще прибавить код самой многопоточной формы ожидания. Все это проверить и протестировать (не говоря уже про само написание кода). И всё это вместо одного простого вызова ProcessMessages из цикла. Возникает вопрос: если результат один и тот же, зачем платить больше (причем на пару порядков)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 18:56:28 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDialekcvp, И к этих 20 строкам кода надо еще прибавить код самой многопоточной формы ожидания. Какой многопоточной? Какая отладка? Таймер на форме и две строчки в TimerOnTimer(): Код: pascal 1. 2. 3. 4. Но вообще, можно писать правильно, а можно - быстро. Каждый выбирает для себя :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 19:13:13 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
RyuuВажно и то, чтобы при A<1 программа просто ждала, пока A не будет больше 0;А кто эту переменную будет менять? Или функция GetXMLFreeLicenseCount может со временем возвратить другое значение? От чего это зависит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 22:46:55 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDiсделай решение для автора в несколько кликов/строк, раз это так просто. Всё уже сделано до нас, рекомендую посмотреть: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_the_Parallel_Programming_Library http://proghouse.ru/programming/36-delphi-xe7-ppl http://www.sql.ru/forum/1050286/ Или таймер на форму, на худой конец. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 23:54:19 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
makhaonнормальное решение делается в несколько строк или несколько кликов. makhaonВсё уже сделано до нас, рекомендую посмотреть: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_the_Parallel_Programming_Library http://proghouse.ru/programming/36-delphi-xe7-ppl http://www.sql.ru/forum/1050286/ Или таймер на форму, на худой конец. 1 и 2. Ссылка на библиотеку (стороннюю/встроенную), которой даже нет в делфи 6 из первого поста; 3. Ссылка на сторонний класс под сотню строк кода в интернете ( привет gunsmoker'у и не в укор wadman'у); 4. Делфийский таймер (таймер, Карл!), который к многопоточному программированию относится не больше, чем ProcessMessages. Т.е. решения в несколько строк/кликов, как выше декларировалось, просто не существует, и все-равно придется разбираться с кучей кода/библиотек (сторонних, причем) только ради того, что программа не зависала в "бесконечном" цикле. Хотя для этих целей имеется встроенное и простое в использование средство в виде ProcessMessages, которое было создано разработчиками делфи в т.ч. и для целей автора данного топика, цитирую : "In lengthy operations, calling ProcessMessages periodically allows the application to respond to paint and other messages." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 00:29:31 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDiХотя для этих целей имеется встроенное и простое в использование средство в виде ProcessMessages, которое было создано разработчиками делфи в т.ч. и для целей автора данного топика, цитирую : "In lengthy operations, calling ProcessMessages periodically allows the application to respond to paint and other messages."Это не отменяет того что эта функция есть суть - кривой костыль, причем с возможными неприятными побочными эффектами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 01:40:27 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
И да, те кто до сих пор пользует Delphi 6 - махровые мазохисты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 01:44:51 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Ryuu, в несколько кликов/строк - это просто: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 02:36:42 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Leo PevznerRyuuLeo Pevzner, пропущено... Я чего-то не понимаю? Да. Предположим, что во времы выполнения этого цикла, пользователь нажмет на крестик и приложение получит сообщение WM_CLOSE. Давайте подумаем, что после этого должно произойти?сработает OnClose, но форму закрыть не дадут, пока не завершится процедура, в которой исполняется цикл. а если во время выполнения потока пользователь нажмёт на крестик? так проблема-то в чём? в том, что очередь Messages заполнится, которые выполнить не дадут, пока не завершится цикл? так они же и обрабатываются ни разу не встречал с этим проблем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 03:35:22 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
просто яа если во время выполнения потока пользователь нажмёт на крестик? Нет проблем, если проверять на закрытие приложения. Как это делается с wcthread: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 08:52:14 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDi, Ок, JaDi, тебе можно так писать :) ТСу тоже. Я же уже написал. Тому, кто хочет пройтись еще раз по граблям, по которым люди уже прошлись сто раз - флаг в руки. Зачем ТСу Delphi 6 тоже покрыто мраком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 10:53:46 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
makhaon, Проблема в том, что в данном случае дешевые гвозди предлагают забивать дорогим микроскопом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 10:58:23 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDiПроблема в том, что в данном случае дешевые гвозди предлагают забивать дорогим микроскопом. Тут вообще программист не нужен. Если купили ПО, то могут им пользоваться, не купили - не могут. Логично? А то страх перед потоками порождает кучу проблем с крутыми эпитетами вроде "дорого микроскопа" и позволяет оправдывать кривые решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 11:25:26 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
wadman, Объясни, в чем кривость решения, используемое самими разработчиками делфи (вызов ProcessMessages внутри длинного цикла, чтобы приложение на зависало и нормально реагировало на пользователя в процессе)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 12:06:39 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDiв чем кривость решения, используемое самими разработчиками делфиЭто где разработчики то его используют? И сам ты часто прибегаешь к такому методу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 13:08:23 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDiв чем кривость решения, используемое самими разработчиками делфи (вызов ProcessMessages внутри длинного цикла, чтобы приложение на зависало и нормально реагировало на пользователя в процессе)? В том, что эта процедура использует PeekMessage вместо GetMessage. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 13:08:31 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
У Delphi вменяемая RTL, но большая часть VCL выглядит так, будто её, из-за недостатка времени для разработки, сбросили на юниора-индуса. Так что если там где-то и затесался вызов ProcessMessages, то использовать это место в качестве образца для подражания следует с точностью до наоборот. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 13:19:10 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDiwadman, Объясни, в чем кривость решения, используемое самими разработчиками делфи (вызов ProcessMessages внутри длинного цикла, чтобы приложение на зависало и нормально реагировало на пользователя в процессе)?ProcessMessages можно применять если цикл выполняется не дольше неск. секунд. А вот для длинного SQL-запроса (и прочего ожидания отклика к-л внеш. процесса) ProcessMessages не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 14:10:23 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Для меня достаточно понимания того, что ProcessMessages нарушает порядок очереди сообщений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 14:20:52 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
Barmaley57Это где разработчики то его используют? Выше кидал ссылку на официальную документацию , где черным по белому написано, что ProcessMessages надо вызывать время от времени при длительных операциях, чтобы приложение не зависало и корректно прорисовывалось у пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 14:27:23 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
wadmanДля меня достаточно понимания того, что ProcessMessages нарушает порядок очереди сообщений. Не затруднит пояснить примером ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 14:30:38 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
schiwadmanДля меня достаточно понимания того, что ProcessMessages нарушает порядок очереди сообщений. Не затруднит пояснить примером ? Сложно представить, что будет при клике, который еще не отработал, но дернул следующее сообщение? А если кодирует не один индус, а два или десять и каждый форсирует обработку очереди? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 14:33:34 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDiBarmaley57Это где разработчики то его используют? Выше кидал ссылку на официальную документацию , где черным по белому написано, что ProcessMessages надо вызывать время от времени при длительных операциях, чтобы приложение не зависало и корректно прорисовывалось у пользователя. Это документация, в ней описывается назначение функции, а не советы по применению и уж тем более не best practic. Ты как американец, требуешь в инструкции указаний каких животных нельзя сушить в микроволновке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 14:36:48 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
wadman, Вообще-то вся VCL как раз на этом принципе и построена, как и виндовые приложения и вообще весь пользовательский интерфейс -- по однопоточной модели. Вот, например, те же DevExpress в своих компонентах где только можно ProcessMessages вставляют (более 50 мест нашлось поиском) -- как раз для того, чтобы не подвисало. Например: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 14:55:43 |
|
||
|
Функция, ожидание значения переменной
|
|||
|---|---|---|---|
|
#18+
JaDiВообще-то вся VCL как раз на этом принципе и построена, как и виндовые приложения и вообще весь пользовательский интерфейс -- по однопоточной модели. Ой, не смеши. Везде, где думают головой, применяются потоки, в т.ч. и в VCL. Запусти пустое приложение и посчитай количество потоков на приложение. На всех ОС и во всех гайдах пишут, что все тяжелое следует выносить в другой поток. JaDiВот, например, те же DevExpress Да... Пиши как хочешь. :-) И пусть все пишут как хотят. Мне всё равно, но ровно до тех пор, пока не начну разбирать г-но за кем-нибудь. А пока кто-то другой с вашими поделиями мучается (и пользуется), то это его выбор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 15:12:38 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2042080]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
187ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 507ms |

| 0 / 0 |
