View previous topic :: View next topic |
Author |
Message |
erros Guest
|
Posted: Tue Aug 23, 2005 3:12 pm Post subject: Ir kaads kas labi parvalda Pascal valodu? |
|
Man ir probleema! Kaada vareetu but Pascal sintakse, lai vareetu nolasiit pogas nospieshanas ilgumu(cik ilgi sekundees vinja ir nospiesta) un izvadiit to uz ekraana? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Tue Aug 23, 2005 5:59 pm Post subject: |
|
Nezinu par kādu paskālu iet runa (turbo/free/object), lai pateiktu ko sīkāk, bet vispārīgi jādara tā:
* kad poga tiek nospiesta, atceries tekošo laika brīdi kautkādā mainīgajā start,
* kad poga tiek atlasita, atņemt no tekošā laika brīža to start vērtību un tad arī dabūsi ilgumu. |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Tue Aug 23, 2005 6:00 pm Post subject: |
|
Nu es tev ieteiktu (un diezvai buus kaads savaadaaks ieteikums) katru ciklu paarbaudiit vai poga ir nospiesta. Ja poga ir nospiesta, tad uznjemt laiku cik ilgi ir nospiesta poga. Tiko poga vairs nav nospiesta tad apstaadinaat laika uznjemshanu un izvadiit uz ekraana. _________________ long time; /* know C */ |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Tue Aug 23, 2005 6:14 pm Post subject: |
|
nee tomeer ir veelviens veids kuru tiko atcereejos. Sen atpakalj kad programmeeju ar Pascal tad biju atradis veelvienu veidu:
Code: |
Uses dos;
var
int9_old:procedure
LastKey:byte
Procedure MyInt9; interrupt; {shitaa proceduura tiek izsaukt katru reizi kad tiek nospiesta vai atlaista poga}
Begin
LastKey:=Port[60];
... {shijaa vietaa saac/beidz laika uznjemshu}
End;
begin
GetIntVec(9,@Int9_old);
SetIntVec(9,@MyInt9);
while(LastKey and $7F) <>1 do {1 noziimee escape poga}
begin
... {galvenais cikls}
end;
SetIntVec(9,@Int9_old);
end. |
Ja tev ir jautaajumi par sho kodu (taadi noteikti ir) tad suuti PM. _________________ long time; /* know C */ |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Tue Aug 23, 2005 6:47 pm Post subject: |
|
Nu ja lieto Turbo Paskālu, tad šis ir vispareizākais veids.
Bet nav labi lietot šāda veida lastkey. Tā var daudzu pogu nospiedienu pazaudēt. Labāk lietot masīvu no 256 baitiem (katrs vienai pogai), un tad uzstādīt tā masīva elementu true, kuram atbilst tā Port[60] vērtība. |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Tue Aug 23, 2005 8:06 pm Post subject: |
|
Nu bet protams, ka izmantot masiivu. Vienkaarshi shis bija kaa showcase nejau izmantojams kods.
Ja tomeer veel kaads nesaprata tad sheit buus arii kods ar array
Code: |
Uses dos;
var
int9_old:procedure
Key:array [0..20] of bool {var gadiities ka sheit ir kljuuda, jo ar paskaalu jau kaadu laiku neprogrammeeju}
Procedure MyInt9; interrupt; {shitaa proceduura tiek izsaukt katru reizi kad tiek nospiesta vai atlaista poga}
Begin
Key[Port[60] and $7F]=true; {es jau vairs neatceros kaa vareeja uzzinaat vai poga tiek atlaista vai nospiesta - tev to buus jaasagooglee}
... {shijaa vietaa saac/beidz laika uznjemshu}
End;
begin
GetIntVec(9,@Int9_old);
SetIntVec(9,@MyInt9);
while not Key[1] do {1 noziimee escape poga}
begin
... {galvenais cikls}
end;
SetIntVec(9,@Int9_old);
end.
|
_________________ long time; /* know C */ |
|
Back to top |
|
|
|