powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Функция, ожидание значения переменной
62 сообщений из 62, показаны все 3 страниц
Функция, ожидание значения переменной
    #39479535
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Помогите, пожалуйста, советом.

Есть проверка на лицензию, пусть будет переменная A. Так вот, нужно написать условие в Delphi 6, чтобы к "телу" программа проходила только в том случае, если A>0. Но! Важно и то, чтобы при A<1 программа просто ждала, пока A не будет больше 0; и когда вновь станет больше 0, то снова пойдёт "гулять" по циклу.

Это возможно сделать стандартными средствами?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479581
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RyuuЭто возможно сделать стандартными средствами?

Нет, тут программировать надо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479583
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Туплю. Решено.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479585
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, если интересно.

Код: plsql
1.
2.
3.
4.
while GetXMLFreeLicenseCount=0 do begin
    Application.ProcessMessages;
    Sleep(5000);
  end;


А дальше собственно цикл, который требует GetXMLFreeLicenseCount > 0.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479614
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отличный пример как не надо делать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479617
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ryuu,

Это делается через потоки. Читай про потоки.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479653
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B, ок.

Dimitry Sibiryakov, почему, если закладка просто на всякий случай?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479659
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ryuuпочему, если закладка просто на всякий случай?

Потому что ProcessMessages и Sleep в одном цикле это ситуация из разряда "либо крестик
сними, либо трусы надень".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479661
Leo Pevzner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ryuu,

Закладка граблей для последующего наступания?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479664
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И всё же никто из присутствующих не объяснил причину, почему это "плохо".
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479667
Leo Pevzner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ryuu,

Какой конкретно результат ожидается от Application.ProcessMessages ?
Вот с какой целью эта строчка написана?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479669
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo Pevzner,
авторАналогично, программа, выполняющая длительные вычисления, может выглядеть зависшей, так как даже сообщения на перемещение её окна или нажатия на кнопки не будут обработаны, пока вычисления не будут закончены. Поэтому нужно либо выполнять вычисления в отдельном потоке, либо периодически выполнять Application.ProcessMessages. Однако, в этом случае нужно учитывать, что выполнение этого метода несколько тормозит выполнение программы, и его вызов не должен быть слишком частым.

Я чего-то не понимаю?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479671
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RyuuИ всё же никто из присутствующих не объяснил причину, почему это "плохо".

Мат пользователей тебе объяснит доходчиво.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479674
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, супер ответ, другого не ожидал. И это не та программа, где "подвисание" кому-то критично. Им нужно нажать на кнопку и ждать, когда программа выполнится.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479687
Leo Pevzner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RyuuLeo Pevzner,
авторАналогично, программа, выполняющая длительные вычисления, может выглядеть зависшей, так как даже сообщения на перемещение её окна или нажатия на кнопки не будут обработаны, пока вычисления не будут закончены. Поэтому нужно либо выполнять вычисления в отдельном потоке, либо периодически выполнять Application.ProcessMessages. Однако, в этом случае нужно учитывать, что выполнение этого метода несколько тормозит выполнение программы, и его вызов не должен быть слишком частым.

Я чего-то не понимаю?

Да. Предположим, что во времы выполнения этого цикла, пользователь нажмет на крестик и приложение получит сообщение WM_CLOSE. Давайте подумаем, что после этого должно произойти?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479701
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo Pevzner, отвечу вопросом на вопрос, зачем ему это делать?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479749
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RyuuLeo Pevzner, отвечу вопросом на вопрос, зачем ему это делать?
Как показывает практика, по отношению к пользователю вопросы "зачем" и "почему" имеют только один ответ: "потому что может" (С).
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479792
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати именно это самый частый вариант для таких программ, где вроде все работает, но как то странно...
более того, пользователь сначала еще пару раз нажмет эту же кнопку, потому что может, из-за Application.ProcessMessages
и только потом (а в приложении уже к этому времени и так полная разруха) он еще и на крестик надавит
и даже не раз, ибо отклика не будет ))
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479795
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все что нужно засовывайте в поток. кнопку - в состояние Enabled:=false;
поток может время от времени через Synchronize() обновлять что-нибудь на форме
(при этом форма будет абсолютно доступна)
в событии потока OnTerminate делайте все что нужно по окончании потока.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479802
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ryuu,

делай, потом нам расскажешь, почему нельзя было. каждый должен набить свои шишки сам. бесполезно кого-то в чем-то убеждать, давно понял.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479813
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RyuuИ всё же никто из присутствующих не объяснил причину, почему это "плохо".
Не слушай их, у них просто карго-культ на потоках. Даже там пытаются их втиснуть, где простой обработки очереди достаточно (ProcessMessages).

Да, возможны косяки, если на форме "типа параллельно" что-то выполняется, и пользователь захочет что-то еще поделать или даже то же самое запустить -- но даже в этом случае можно без потоков обойтись (включая/отключая элементы интерфейса).

Так что не все так так плохо у ProcessMessages, как малюют. Дешего и сердито, а работает для пользователя точно так же.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479818
Leo Pevzner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RyuuLeo Pevzner, отвечу вопросом на вопрос, зачем ему это делать?

Я обозначил примерное направление, в котором можно покопаться и понять, почему использование ProcessMessages должно быть более осознанным чем то, что вы привели в примере. Если хотите разобраться, покопаетесь и разберетесь, если считаете, что вам это не надо и некорректное поведение программы в некоторых случаях вполне допустимо... ну нет, так нет....
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479829
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi, я и не собирался их слушать. Но рад, что обсуждение вылилось хоть во что-то осмысленное, а не в упреки без какой-либо аргументации своей позиции с толикой высокомерия.

Ps.
Все действия до данной строки практически мгновенны, и их мало. Да, там есть один update одной строки, в случае, если он вообще нужен (0.01% вероятность). Так что, свойство "не дам закрыть" сразу, меня более чем устраивает. Они его даже не заметят.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479832
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RyuuВсе действия до данной строки практически мгновенны, и их мало.Так зачем же тогда там application.processmessages? Хотя бы для себя ответь на этот вопрос.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479833
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo Pevzner, я знаю о двух его свойствах. В данном случае, мне важно было озвученное. Первое же, "потоковое", здесь не играет ни какой роли. Другими словами, его применение вполне осмысленное.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479836
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57, чтобы программа не считалась "мёртвой", если лицензии долго не будет.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479842
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда, учитывая это:
RyuuИ это не та программа, где "подвисание" кому-то критично. Им нужно нажать на кнопку и ждать, когда программа выполнится.совсем не понятно, зачем так делать. Как уже выше написали могут быть проблемы с отменой подвисшего ожидания.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479845
Фотография Ryuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57, какого рода проблемы? Как раз без этой функции и могут быть проблемы в стиле "программа не отвечает", хотя на самом деле работает, или же я чего-то путаю?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479849
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RyuuКак раз без этой функции и могут быть проблемы в стиле "программа не отвечает", хотя на
самом деле работает, или же я чего-то путаю?

Похоже, ты этот кусок вообще не тестировал. А зря.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479861
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ryuu, зайдем с другой стороны: а возможность отмены длительного ожидания лицензии планировалась в приложении?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479899
Leo Pevzner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ryuu,

Есть 2 вида людей. Одни уже бэкапятся, а другие еще нет. (с)

Зачем вы интересуетесь мнением коммьюнити, если не хототе к нему прислушаться?
Вам прямым текстом сказали, что так делать не надо и намекнули почему. Вопрос немного более глубок, чем кажется на первый взгляд. Но если вам хочется пройти долгим путем - да пожалуйста.... Может быть кто-то следующий прочтет этот топик, задумается и это принесет ему пользу...
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479904
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo Pevzner,

Удивляюсь упорству людей делать костыли ) При том, что нормальное решение делается в несколько строк или несколько кликов.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479907
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,

сделай решение для автора в несколько кликов/строк, раз это так просто.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479917
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDimakhaon,
сделай решение для автора в несколько кликов/строк, раз это так просто.
Делать не буду, но на вскидку: маленькая формочка "ожидание лицензии" с кратким описанием, одной кнопкой "отмена" и таймером на 200-500 мсек, в котором проверяется значение переменной, и по результату выставляется mrOk. "Отмена" соотв-но выставляет mrCancel. Причём если автор уверен, что получение лицензии в 9 случаях из 10 очень быстрое, то можно сделать что-то вроде (псевдокод):
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
WaitStep := 0;
while (License <= 0) and (WaitStep < 10) do begin
  Inc(WaitStep);
  Sleep(100);
end;
if License <=0 then begin
  with TWaitForm.Create(Self) do try 
    if ShowModal <> mrOk then begin
      // что-то пошло не так и пользователю надоело ждать лицензию.
      Exit;
    end;
  finally
    Free;
  end;
end;
// тут у нас уже есть лицензия


Таким образом будет "залипание" приложения на одну секунду и если за эту секунду лицензия не "прокнет", то будет отображено окно ожидания.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479918
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правда там предполагается, что значение License меняется где-то в другом потоке. Если в этом же, то лучше сразу форму с таймером.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479919
А что если он уже показал формочку, которая не закрывается, но в которой ожидание лицензии по предложенному автором методу, как в этом случае ему может навредить ProcessMessage?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479927
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вы задолбаликак в этом случае ему может навредить ProcessMessage?

Будет зря греть процессор.
В сочетании с Sleep() вызовет состояние "Not responding" со всеми вытекающими вплоть до
автоматического убиения приложения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479934
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

И к этих 20 строкам кода надо еще прибавить код самой многопоточной формы ожидания. Все это проверить и протестировать (не говоря уже про само написание кода). И всё это вместо одного простого вызова ProcessMessages из цикла. Возникает вопрос: если результат один и тот же, зачем платить больше (причем на пару порядков)?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39479936
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDialekcvp,
И к этих 20 строкам кода надо еще прибавить код самой многопоточной формы ожидания.
Какой многопоточной? Какая отладка? Таймер на форме и две строчки в TimerOnTimer():
Код: pascal
1.
2.
3.
4.
if License > 0 then begin
  Timer.Enabled := False;
  ModalResult := mrOk;
end; 


Но вообще, можно писать правильно, а можно - быстро. Каждый выбирает для себя :)
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480013
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RyuuВажно и то, чтобы при A<1 программа просто ждала, пока A не будет больше 0;А кто эту переменную будет менять? Или функция GetXMLFreeLicenseCount может со временем возвратить другое значение? От чего это зависит?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480031
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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/

Или таймер на форму, на худой конец.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480046
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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."
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480060
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiХотя для этих целей имеется встроенное и простое в использование средство в виде ProcessMessages, которое было создано разработчиками делфи в т.ч. и для целей автора данного топика, цитирую : "In lengthy operations, calling ProcessMessages periodically allows the application to respond to paint and other messages."Это не отменяет того что эта функция есть суть - кривой костыль, причем с возможными неприятными побочными эффектами.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480061
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да, те кто до сих пор пользует Delphi 6 - махровые мазохисты.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480070
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ryuu, в несколько кликов/строк - это просто:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure TForm1.TestLicenseClick(Sender: TObject);
begin
 Enabled := False;
 Tag := GetTickCount() + 100500;
 Application.OnMessage := OnMsg;
 SetTimer(Handle, 0740, 1050, nil);
 Caption := 'Для отмены ожидания - Esc';
end;

procedure TForm1.OnMsg(var Msg: tagMSG; var Handled: Boolean);
begin
 if ( (Msg.message = WM_TIMER) and (Msg.wParam = 0740) )
  then Handled := ( ( License() ) or ( Tag < GetTickCount() ) )
  else Handled := ( (Msg.message = WM_KEYDOWN) and (Msg.wParam = VK_ESCAPE) );

 if ( Handled ) then begin
  Application.OnMessage := nil;
  KillTimer(Handle, 0740);
  Enabled := True;
  Caption := 'Ok';
 end;
end;


...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480076
просто я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leo PevznerRyuuLeo Pevzner,
пропущено...

Я чего-то не понимаю?

Да. Предположим, что во времы выполнения этого цикла, пользователь нажмет на крестик и приложение получит сообщение WM_CLOSE. Давайте подумаем, что после этого должно произойти?сработает OnClose, но форму закрыть не дадут, пока не завершится процедура, в которой исполняется цикл.

а если во время выполнения потока пользователь нажмёт на крестик?

так проблема-то в чём? в том, что очередь Messages заполнится, которые выполнить не дадут, пока не завершится цикл? так они же и обрабатываются
ни разу не встречал с этим проблем
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480119
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто яа если во время выполнения потока пользователь нажмёт на крестик?
Нет проблем, если проверять на закрытие приложения.

Как это делается с 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.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, wcthread, StdCtrls;

type
  TForm1 = class(TForm)
    WCThread1: TWCThread;
    TaskCheckLicense: TTask;
    Label1: TLabel;
    procedure TaskCheckLicenseExecute(const Sender: TTask; const Msg: Word; var Param: Variant);
    procedure FormCreate(Sender: TObject);
    procedure TaskCheckLicenseFinish(const Sender: TTask; const Msg: Word; const Param: Variant);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Label1.Caption := 'Проверка лицензии...';
  // запускаем проверку лицензии в другом потоке
  TaskCheckLicense.Start;
end;

procedure TForm1.TaskCheckLicenseExecute(const Sender: TTask; const Msg: Word; var Param: Variant);
begin
  // проверяем лицензию, это другой поток
  Sender.WaitMs(5000); // ожидаем 5 сек
  //Param := 'Лицензия не прошла проверку.';
  Param := 'Лицензия прошла проверку';  // входной и выходной параметр, передается из Start и в Finish  
end;

procedure TForm1.TaskCheckLicenseFinish(const Sender: TTask; const Msg: Word; const Param: Variant);
begin
  // этот метод выполняется в основном потоке, получает результат из другого потока
  Label1.Caption := Param;
end;

end.

...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480224
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi,

Ок, JaDi, тебе можно так писать :) ТСу тоже. Я же уже написал. Тому, кто хочет пройтись еще раз по граблям, по которым люди уже прошлись сто раз - флаг в руки.

Зачем ТСу Delphi 6 тоже покрыто мраком.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480229
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,

Проблема в том, что в данном случае дешевые гвозди предлагают забивать дорогим микроскопом.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480260
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiПроблема в том, что в данном случае дешевые гвозди предлагают забивать дорогим микроскопом.
Тут вообще программист не нужен. Если купили ПО, то могут им пользоваться, не купили - не могут.
Логично?

А то страх перед потоками порождает кучу проблем с крутыми эпитетами вроде "дорого микроскопа" и позволяет оправдывать кривые решения.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480289
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Объясни, в чем кривость решения, используемое самими разработчиками делфи (вызов ProcessMessages внутри длинного цикла, чтобы приложение на зависало и нормально реагировало на пользователя в процессе)?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480331
Barmaley57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiв чем кривость решения, используемое самими разработчиками делфиЭто где разработчики то его используют? И сам ты часто прибегаешь к такому методу?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480332
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiв чем кривость решения, используемое самими разработчиками делфи (вызов ProcessMessages
внутри длинного цикла, чтобы приложение на зависало и нормально реагировало на
пользователя в процессе)?

В том, что эта процедура использует PeekMessage вместо GetMessage.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480337
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Delphi вменяемая RTL, но большая часть VCL выглядит так, будто её, из-за недостатка
времени для разработки, сбросили на юниора-индуса. Так что если там где-то и затесался
вызов ProcessMessages, то использовать это место в качестве образца для подражания следует
с точностью до наоборот.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480405
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiwadman,

Объясни, в чем кривость решения, используемое самими разработчиками делфи (вызов ProcessMessages внутри длинного цикла, чтобы приложение на зависало и нормально реагировало на пользователя в процессе)?ProcessMessages можно применять если цикл выполняется не дольше неск. секунд.
А вот для длинного SQL-запроса (и прочего ожидания отклика к-л внеш. процесса) ProcessMessages не подходит.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480415
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для меня достаточно понимания того, что ProcessMessages нарушает порядок очереди сообщений.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480420
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barmaley57Это где разработчики то его используют?
Выше кидал ссылку на официальную документацию , где черным по белому написано, что ProcessMessages надо вызывать время от времени при длительных операциях, чтобы приложение не зависало и корректно прорисовывалось у пользователя.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480426
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanДля меня достаточно понимания того, что ProcessMessages нарушает порядок очереди сообщений.

Не затруднит пояснить примером ?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480429
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiwadmanДля меня достаточно понимания того, что ProcessMessages нарушает порядок очереди сообщений.

Не затруднит пояснить примером ?
Сложно представить, что будет при клике, который еще не отработал, но дернул следующее сообщение?
А если кодирует не один индус, а два или десять и каждый форсирует обработку очереди?
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480435
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiBarmaley57Это где разработчики то его используют?
Выше кидал ссылку на официальную документацию , где черным по белому написано, что ProcessMessages надо вызывать время от времени при длительных операциях, чтобы приложение не зависало и корректно прорисовывалось у пользователя.
Это документация, в ней описывается назначение функции, а не советы по применению и уж тем более не best practic.
Ты как американец, требуешь в инструкции указаний каких животных нельзя сушить в микроволновке.
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480452
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Вообще-то вся VCL как раз на этом принципе и построена, как и виндовые приложения и вообще весь пользовательский интерфейс -- по однопоточной модели.

Вот, например, те же DevExpress в своих компонентах где только можно ProcessMessages вставляют (более 50 мест нашлось поиском) -- как раз для того, чтобы не подвисало. Например:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure TcxHintStyleEditor.LoadHintCtrls;
begin
  // ...

  while not cxFnHint.Properties.LoadFontComplete do
    Application.ProcessMessages;
  
  // ...
end;
...
Рейтинг: 0 / 0
Функция, ожидание значения переменной
    #39480466
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiВообще-то вся VCL как раз на этом принципе и построена, как и виндовые приложения и вообще весь пользовательский интерфейс -- по однопоточной модели.
Ой, не смеши. Везде, где думают головой, применяются потоки, в т.ч. и в VCL.
Запусти пустое приложение и посчитай количество потоков на приложение.
На всех ОС и во всех гайдах пишут, что все тяжелое следует выносить в другой поток.

JaDiВот, например, те же DevExpress
Да... Пиши как хочешь. :-) И пусть все пишут как хотят.
Мне всё равно, но ровно до тех пор, пока не начну разбирать г-но за кем-нибудь.
А пока кто-то другой с вашими поделиями мучается (и пользуется), то это его выбор.
...
Рейтинг: 0 / 0
62 сообщений из 62, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Функция, ожидание значения переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]