Spojazdnenie myši – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Spojazdnenie myši – Pascal – Fórum – Programujte.comSpojazdnenie myši – Pascal – Fórum – Programujte.com

 

Grungy0
Super člen
3. 1. 2008   #1
-
0
-

Ahojte potreboval by som helpnúť s myškou v pascali. Program ktorý by mal vypisovať suradnice bodu kde kliknem my však nejde. Mohol by mi to niekto pomôcť opraviť pls. Dik

uses dos,crt;

var button,MysY,MysX:integer;

{inicializacia ovladaca mysi}
function Mys_init:boolean;
var reg:registers;
begin
reg.ax:=$0000;
intr($33, reg);
{button:=reg.bx;}
if reg.ax=$0000 then mys_init:=false
else mys_init:=true;
end;

{zobrazi kurzor mysi}
procedure Mys_view;
var reg:registers;
begin
reg.ax:=$0001;
intr ($33,reg);
end;

{zisti stlacenie a suradnice mysi}
procedure Mys_get(MysX,MysY,Button:integer);
var reg:registers;
Begin
reg.ax:=$0003;
intr ($33,reg);
MysX:=(succ(reg.cx)) div 8;
MysY:=(succ(reg.dx)) div 8;
Button:=reg.bx;
end;

{vypne/zapne kurzor}
procedure KurzorZap (ZapVyp:boolean);
var reg:registers;
begin
with reg do
begin
AH:=$03;
BH:=$00;
intr($10,reg);
if not(ZapVyp) then CH:=CH or $20
else CH:=CH and $DF;
AH:=$01;
intr($10,reg);
end;
end;

BEGIN
clrscr;
Mys_init;
Mys_view;
KurzorZap(false);
repeat
Mys_get(MysX,MysY,Button);
if (Button<>0) then
writeln('mys:',MysX,',',MysY);
until keypressed;
readkey;
END.

Nahlásit jako SPAM
IP: 213.215.118.–
Prvý náznak hlúposti, je pocit geniality.
Laaca0
Stálý člen
3. 1. 2008   #2
-
0
-

Tak tuhle chybu co máš ty, mívám furt, normálka :smile5:
Je to zapomenuté var v deklaraci procedury Mys_Get. Tedy:
Procedure Mys_Get(var MysX,MysY,Button:integer);

Nahlásit jako SPAM
IP: 81.0.253.–
DOS-u-akbar
Grungy0
Super člen
4. 1. 2008   #3
-
0
-

No opravil som to ale stále to nejde :(

Nahlásit jako SPAM
IP: 213.215.118.–
Prvý náznak hlúposti, je pocit geniality.
Mircosoft+1
Věrný člen
4. 1. 2008   #4
-
0
-

Řekl bych, že ještě jedna chyba je tady:

MysX:=(succ(reg.cx)) div 8;

MysY:=(succ(reg.dx)) div 8;


Je potřeba nejdřív dělit osmi a potom přičítat 1, tedy:

MysX:=succ(reg.cx div 8);

MysY:=succ(reg.dx div 8);


Jestli pracuješ v BP nebo FP, zkontroluj si, jestli kompiluješ pro real mód (v TP je to jednodušší, ten nic jiného neumí). Nejsem si jistý, jestli v protektu tohle přerušení vůbec funguje.

Nahlásit jako SPAM
IP: 89.176.249.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Laaca0
Stálý člen
4. 1. 2008   #5
-
0
-

Jasně, tohle přerušení v protektu normálně funguje.
Taky doporučuju udělat tuhle malou změnu:



if (Button<>0) then
begin
writeln('mys:',MysX,',',MysY);
repeat
Mys_Get(MysX,MysY,Button);
until Button=0;
end;

Nahlásit jako SPAM
IP: 81.0.253.–
DOS-u-akbar
Grungy0
Super člen
5. 1. 2008   #6
-
0
-

No už s tým skúšam všetko možné ale stále nič ... žeby to bolo Free Pascalom???

Nahlásit jako SPAM
IP: 213.215.118.–
Prvý náznak hlúposti, je pocit geniality.
Mircosoft+1
Věrný člen
5. 1. 2008   #7
-
0
-

Tak sem hoď současnou verzi zdrojáku a hlavně upřesni, CO nejde...

Nahlásit jako SPAM
IP: 85.132.158.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Petrzima0
Duch
22. 11. 2009   #8
-
0
-

Dobrý den všem, měl bych dva takové dotazy, jeden je trochu OffTopic.
Mne se sice podařilo v Pascalu zprovoznit myš v textovém režimu, jenže mi funguje pouze v režimu 80x25.V režimu 80x50(50sáti řádcích)sice funguje též, ale jen v rozsahu prvních 25ti řádcích, prostě pohybovat a klikat myší lze jen v horní polovině obrazovky. Přiznám se ,že procedury pro použití myši jsem opsal, assembler neovládám, takže nevím v čem je chyba.

Druhý dotaz se týká jiného programovacího jazyka, nicméně téma pro tento jazyk zde není, tak kdybyste někdo náhodou věděl budu rád. Ve škole se učíme progr. ve fortranu, jazyk je to jednoduchý a pro některé úlohy skvělý, nicméně když jsem se pokoušel naprogramovat vstup pomocí jednoduché tabulky(jako v excelu,pár buněk mezi kterými se můžu pohybovat šipkami)málem jsem u toho vyrostl. To co je v pascalu otázkou chvilky a na co je v něm spousta funkcí, je zde téměř nemožné. Aspoň tak mi to připadá. Hlavní dotaz, nevíte náhodou někdo, jakým způsobem(je li to vůbec možné) se dá ve fortranu nastavit kurzor na obrazovce(v grafickém či textovém režimu), takovou obdobu Pascalovského gotoxy?

Píši program pro operace s maticemi, kdyby to někoho zajímalo.

Nahlásit jako SPAM
IP: 89.103.174.–
Laaca0
Stálý člen
23. 11. 2009   #9
-
0
-

Fortran neznám, takže jenom ohledně myši:

Nejpravděpodobnější je, že používáš nějaký primitivní a hodně starý ovladač myši, který si z nějakého důvodu neporadí s rozlišením 80x50.
Další možnost je, že napřed zapínáš myš a až potom přepínáš do rozlišení 80x50 a ovladač myši tudíž neví, že se něco změnilo. Dělej to naopak, tzn. napřed nastavit videorežim a až potom řešit myš.

Poslední možnost je, že jelikož používáš zdroják, kterému moc nerozmíš, tak že někde používá natrvrdo dané nastavení rozsahu pohybu myši pomocí funkcí Define Horizontal Cursor Range a Define Vertical Cursor Range
Info k těmto službám je tady:
http://www.ctyme.com/intr/rb-5963.htm
http://www.ctyme.com/intr/rb-5964.htm

Nahlásit jako SPAM
IP: 188.120.212.–
DOS-u-akbar
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Tlačítko myši — založil zonda

Pohyb s myší — založil radar.sm

Posunutí myši — založil DV

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý