IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Одновременная работа двух процессов
сообщение
Сообщение #1


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Как в Паскале реализовать работу сразу двух процессов. Тоесть, например,
одновременно программа выводит идущие часы на екран и ожидает нажатие
кнопки, если кнопка была нажата то программа выполняет какое-то действие,
и снова ожидает нажатие кнопки. !help.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Прогрессор
****

Группа: Пользователи
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


В Дельфи можно работать с потоками (TTreads), в Турбо Паскале несколько процессов запустить одновременно, насколько я злаю, нельзя (в DOS нет многозадачности), но можно посоветовать работать в цикле:

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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


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

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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Можно реализовать отображение часов (а лучше проверку их изменения, а потом уже отображение) в виде процедуры, а потом ее пихать везде где можно, т.е. например в циклы:


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



--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






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


Этот цикл будет работать только до первого нажатие клавиши, а мне надо
чтобы программа постоянно ожидала нажатие клавиши, постоянно выводила идущие часы, и при этом она могла разобрать, какая именно клавиша была нажата. :cwm31: :cursorsmile2:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Извините, guest это bokul, то-есть я, просто забыл войти под своим логином. 10.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






To: Bokul
repeat
show_clock;
if keypressed then begin
ch := readkey;
case ch of
... { разбирай, какая клавиша нажата }
end;
end;
until ch = #27; { escape - выход }
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
if keypressed then begin
    ch := readkey;


Значит мне придется два раза нажимать одну и ту же клавишу? :confused:


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






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

НО !!! При этом ничего из буфера клавиатуры не читается, все, что там было - там и остается... А вот когда ты уже вошел внутрь If, и делаешь
ch := readkey;
, то тут ты и читаешь (первый и единственный раз) код той клавиши, которая была нажата... Так что в коде все нормально wink.gif Ничего дважды нажимать не придется...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Большое спасибо. 4.gif !thanks.gif !flowers.gif respect.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 14.05.2024 19:03
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name