Помощь - Поиск - Пользователи - Календарь
Полная версия: Одновременная работа двух процессов
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Bokul
Как в Паскале реализовать работу сразу двух процессов. Тоесть, например,
одновременно программа выводит идущие часы на екран и ожидает нажатие
кнопки, если кнопка была нажата то программа выполняет какое-то действие,
и снова ожидает нажатие кнопки. !help.gif
Atos
В Дельфи можно работать с потоками (TTreads), в Турбо Паскале несколько процессов запустить одновременно, насколько я злаю, нельзя (в DOS нет многозадачности), но можно посоветовать работать в цикле:

repeat
...
тут сдвигать стрелку часов;
...
until keypressed;

Altair
Цитата
есколько процессов запустить одновременно, насколько я злаю, нельзя

Есть псевдомультизадачность.
В сети можно найти кучу модулей для реализации.
На форуме обсуждалось, пользуйся поиском.
исходники:
http://pascal.sources.ru/multtask/index.htm
APAL
Можно реализовать отображение часов (а лучше проверку их изменения, а потом уже отображение) в виде процедуры, а потом ее пихать везде где можно, т.е. например в циклы:


{...}
Repeat
{...}
Clock;
{...}
Until KeyPressed;
{...}

Guest
Цитата
Repeat
{...}
  Clock;
{...}
Until KeyPressed;


Этот цикл будет работать только до первого нажатие клавиши, а мне надо
чтобы программа постоянно ожидала нажатие клавиши, постоянно выводила идущие часы, и при этом она могла разобрать, какая именно клавиша была нажата. :cwm31: :cursorsmile2:
Bokul
Извините, guest это bokul, то-есть я, просто забыл войти под своим логином. 10.gif
volvo
To: Bokul
repeat
show_clock;
if keypressed then begin
ch := readkey;
case ch of
... { разбирай, какая клавиша нажата }
end;
end;
until ch = #27; { escape - выход }
Bokul
Цитата
if keypressed then begin
    ch := readkey;


Значит мне придется два раза нажимать одну и ту же клавишу? :confused:
volvo
To: Bokul
Ты в курсе, КАК работает функция KeyPressed? По-моему, нет... А работает она так:
если что-то было нажато, и буфер клавиатуры НЕ пустой, то KeyPressed вернет True, и ты зайдешь внутрь If ...

НО !!! При этом ничего из буфера клавиатуры не читается, все, что там было - там и остается... А вот когда ты уже вошел внутрь If, и делаешь
ch := readkey;
, то тут ты и читаешь (первый и единственный раз) код той клавиши, которая была нажата... Так что в коде все нормально wink.gif Ничего дважды нажимать не придется...
Bokul
Большое спасибо. 4.gif !thanks.gif !flowers.gif respect.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.