Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Функция, ожидание значения переменной / 25 сообщений из 62, страница 1 из 3
29.06.2017, 11:20:13
    #39479535
Ryuu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, ожидание значения переменной
Добрый день.

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ps.
Все действия до данной строки практически мгновенны, и их мало. Да, там есть один update одной строки, в случае, если он вообще нужен (0.01% вероятность). Так что, свойство "не дам закрыть" сразу, меня более чем устраивает. Они его даже не заметят.
...
Рейтинг: 0 / 0
29.06.2017, 16:40:26
    #39479832
Barmaley57
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, ожидание значения переменной
RyuuВсе действия до данной строки практически мгновенны, и их мало.Так зачем же тогда там application.processmessages? Хотя бы для себя ответь на этот вопрос.
...
Рейтинг: 0 / 0
29.06.2017, 16:41:25
    #39479833
Ryuu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция, ожидание значения переменной
Leo Pevzner, я знаю о двух его свойствах. В данном случае, мне важно было озвученное. Первое же, "потоковое", здесь не играет ни какой роли. Другими словами, его применение вполне осмысленное.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Функция, ожидание значения переменной / 25 сообщений из 62, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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