Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2007, 10:45   #11
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты луче скажи какие действия ты хош выполнять параллельно с проверкой нажатия клавиши?
Та что угодно, сверху верно сказано - многозадачность. Смысл не в том, что мне нужно сделать определенную какую-то прогу, смысл во, многозадачности, никак не мог это слово придумать.
Мне вот посказывают, простой способ, но не совем эффективный, написать прогу со звуком, вторую написать основную и во второй запускать первую.


JTG ты не можешь найти свой исходник, чтобы поглядеть на пример?
Небесный вне форума Ответить с цитированием
Старый 12.10.2007, 19:55   #12
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию

Так... Если я правильно понял музыка играет постоянно, потом при нажатии кнопки должен извлекаться другой звуковой сигнал, а основной продолжает играть без изменений...
Код:
 
program M_sound;
uses crt;
var
b:boolean;
ch:char;
begin
clrscr;
repeat
b:=keypressed;
if b=true then begin
ch:=readkey;
sound(500); delay(30000); nosound;
end else begin sound(100); delay(3000); nosound; end;
until ch=chr(27);
end.
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Старый 13.10.2007, 22:21   #13
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Цитата:
Сообщение от Tayfun Посмотреть сообщение
Так... Если я правильно понял музыка играет постоянно, потом при нажатии кнопки должен извлекаться другой звуковой сигнал, а основной продолжает играть без изменений...
Код:
 
program M_sound;
uses crt;
var
b:boolean;
ch:char;
begin
clrscr;
repeat
b:=keypressed;
if b=true then begin
ch:=readkey;
sound(500); delay(30000); nosound;
end else begin sound(100); delay(3000); nosound; end;
until ch=chr(27);
end.
Только сегодня получилось мне попасть нормально на форум.
Тайфун, практически верно.
Вот смотри, например задана такова.
Есть программка, программка-калькулятор. В это м же калькуляторе когда нажимаешь клавиши, чтобы извлекался звук.
Другой пример: пишешь ты игрушку, в игре идут какие-то события, когда нажимаешь на клавиши, извлекаеться звук.
Третий пример: вообще какая-либо прога, где нужно извлекать звук всех клавишь, но чтобы само извлечение не действовало на ход программы.

В твоем случаее первый звук прерываеться и извлекаеться второй.
Моя же цель, чтобы программа работала без прерывания.

Я рыл-рыл и думаю. что есть один выход только, чтобы и основной программы запускать вторую программу, которая уже извлекает звук.

Например:
Идет запуск проги, первая ее задача запустить программку звука, запустилась программка звука, ход действий пошел дальше.
Вот только не знаю я, как запустить в паскале экзешник.
Небесный вне форума Ответить с цитированием
Старый 17.10.2007, 12:24   #14
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Эм.. Тема ещё актуальна?
Код:
program fuck;
uses crt, Multi;

var x1,y1,x2,y2,dx,dy:shortint;
    z:char;

  procedure X;
  begin
    repeat 
      textcolor(10);
      gotoxy(x1,y1);
      write(' ');

      inc(x1,dx);
      inc(y1,dy); 

      gotoxy(x1,y1);  
      write('X');
      
      If (x1<=1) or (x1>=79) then dx:=-dx;
      If (y1<=1) or (y1>=24) then dy:=-dy; 
      delay(10000); {подправить на своё}
      yield;
    until false;
  end;

  procedure O;
  begin
    repeat 
      textcolor(12);
      gotoxy(x2,y2);
      write(' ');
      If keypressed then
      begin  
        z:=readkey;
        case z of
	'd':If x2<79 then inc(x2);
	'a':If x2>1 then dec(x2);
	's':If y2<24 then inc(y2);
	'w':If y2>1 then dec(y2);
        end;
      end;
      gotoxy(x2,y2);
      write('O');
      yield; 
    until ord(z)=27;
    clrscr;
    halt;
  end;

begin
  clrscr;
  randomize;
  x2:=40;
  y2:=12;
  x1:=20;
  y1:=11;
  dx:=1;
  dy:=1;
  maketask(@X,8192);
  maketask(@O,8192);
  start;
end.
Кто там пример просил? Гг, вспомнил детство
Примитивно конечно, но осн. смысл думаю понятен.
Если нужно вставить музыку - то при больших delay второй "поток" начинает тормозить. Решается разбиением delay на более мелкие паузы,

т.е. вместо
delay(10000);
yield;

пишем

for i:=1 to 20 do
begin
delay(500);
yield;
end;

А вообще конечно способ этой "многозадачности" немного идиоткий ))
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Icq сообщение Marsik Помощь студентам 2 10.04.2008 04:22
Как прочитать сообщение по ICQ? Иллидан Работа с сетью в Delphi 5 18.02.2008 18:33
Звуковое сопровождение при компиляции John_chek Общие вопросы Delphi 2 23.01.2008 12:36