🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.pascal
5 messages
5 total messages Started by marjan Tue, 13 Nov 2007 21:31
2 procedury na raz
#92277
Author: marjan
Date: Tue, 13 Nov 2007 21:31
16 lines
1084 bytes
Witam.

Czy jest możliwe aby program wykonywał 2 procedury na raz?

Zależy mi na tym aby pomimo działania programu, w tym wykonywania
różnych poleceń, funkcji i procedur, cały czas "w tle" był wydobywany
dźwięk (poleceniem sound), ktorego melodia byłaby zapisana właśnie w
procedurze. Da się tak zrobić?


z góry dzięki za pomoc..


-- 
pozdrawiam,
marjan
Re: 2 procedury na raz
#92278
Author: Solaris
Date: Tue, 13 Nov 2007 22:04
49 lines
1925 bytes
Dnia Tue, 13 Nov 2007 22:31:37 +0100, jakże pięknego
marjan <klero.tk@gmail.pl.no-spam.com> wystukał co zawarte poniżej:

:: Witam.
:: 
:: Czy jest możliwe aby program wykonywał 2 procedury na raz?
:: 
:: Zależy mi na tym aby pomimo działania programu, w tym wykonywania
:: różnych poleceń, funkcji i procedur, cały czas "w tle" był wydobywany
:: dźwięk (poleceniem sound), ktorego melodia byłaby zapisana właśnie w
:: procedurze. Da się tak zrobić?
:: 

coś w ten deseń

var tablica_myzyki: array[0.99] of Byte;
	temp:pointer;

tablica_muzyki[0]:=512; (itp itd);

procedure muza(); interrupt;
begin
	repeat
		for i:=0 to 99
			sound(tablica_muzyki[i]);

		nosound();
	until (false);
end;



begin
	getincvec(jakies_przerwanie, temp)
	setintvec(jakies_przerwanie, addr(muza))

	repeat
		writeln('i muzka gra... haha');
	until (keypressed):
end.


Co do przerwania, to znajdz sobie jakieś. ;)

-- 
Home: admin.idns.pl
Linux registered user: 408584
Contact: GG#44450, solaris#idns.pl
19:16:28 -!- Platyna Erroneous Nickname 
Re: 2 procedury na raz
#92279
Author: Solaris
Date: Tue, 13 Nov 2007 22:05
18 lines
1290 bytes
Dnia Tue, 13 Nov 2007 23:04:11 +0100, jakże pięknego
Solaris <solaris@be.inspired> wystukał co zawarte poniżej:

Się troche błędów skardło. ;)

:: var tablica_muzyki: array[0..99] of Word;

:: 	until (keypressed):

	setintvec(jakies_przerwanie, temp);

:: end.

-- 
Home: admin.idns.pl
Linux registered user: 408584
Contact: GG#44450, solaris#idns.pl
19:16:28 -!- Platyna Erroneous Nickname 
Re: 2 procedury na raz
#92280
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 13 Nov 2007 22:30
24 lines
1745 bytes
marjan wrote:
> Czy jest możliwe aby program wykonywał 2 procedury na raz?
>
> Zależy mi na tym aby pomimo działania programu, w tym wykonywania
> różnych poleceń, funkcji i procedur, cały czas "w tle" był wydobywany
> dźwięk (poleceniem sound), ktorego melodia byłaby zapisana właśnie w
> procedurze. Da się tak zrobić?


Wątki/Procesy, ogólnie współbieżność.

Platforma? Kompilator?

- TP? DOS? - to co napisał Solaris, wpiąć się w przerwanie zegarowe
  (przerwanie o indeksie $1C)
- Win32 - utworzyć wątek za pomocą CreateThread() z unitu Windows.
- Linux - skorzystać z biblioteki pthreads
- ogólnie - w FPC w unit Classes jest klasa TThread, wystarczy przykryć
  wirtualną metode Execute i będziesz miał "przenośny" wątek.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.
http://maly.nemo.pl/ 
Re: 2 procedury na raz
#92281
Author: Wiktor S.
Date: Thu, 15 Nov 2007 13:26
22 lines
1322 bytes
> - ogólnie - w FPC w unit Classes jest klasa TThread, wystarczy
>  przykryć wirtualną metode Execute i będziesz miał "przenośny" wątek.


TThread jest wrapperem na standardowe funkcje freepascala:


function watek(parametr:pointer):longint;
begin
  writeln('wątek');
end;


begin
  beginthread(@watek);         // albo:  beginthread(@watek,jakis_pointer);
  writeln('program główny');
end.



-- 
Azarien
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads