powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Функция, ожидание значения переменной
25 сообщений из 62, страница 1 из 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
25 сообщений из 62, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Функция, ожидание значения переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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