ERLEDIGT
JA
JA
ANTWORTEN
16
16
ZUGRIFFE
1331
1331
EMPFEHLEN
-
Hallo zusammen,
im FPC2.0 ist ein unit Mouse dabei, was auch unter Linux laufen soll. In der Dokumentation habe ich das kleine Pogramm gefunden:Nach fehlerfreier Compiltation, zeigt das Programm leider immer nur X,Y= (0,0) an. Eine Fehlermeldung gab es nicht. Ausprobiet habe ich es in der Konsole unter X.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
//testmouse.pas uses mouse; Var X,Y : Word ; begin InitMouse ; Writeln('Move mouse cursor to square 10 ,10 to end ') ; showMouse; Repeat X:=GetMouseX ; Y:=GetMouseY ; Writeln ('X,Y= ( ',X, ' , ' ,Y, ' ) ' ) ; Until (X=9) and (Y=9) ; DoneMouse ; end .
Andere Mausunterstützte Progamme wie MC oder auch das Beispiel von Freevision laufen. Die Mausunterstützung in der Konsole ist also gegeben.
Kann mir bitte jemand einen Tip geben, wie ich die Maus in Betrieb nehmen kann.
Vielen Dank.
Jan-Rene'
-
Hallo,
hilft das vielleicht weiter?
http://www.datasource.de/programmier...pascal_01.html
MArc
-
Hallo MArc,
Danke für deine Antwort.
Leider ist die Hilfe für Dos, ich weiß nicht, ob das unter Linux so functioniert.
Die Sache brauch ich, um ein paar alte Dosenprogramme in der Linuxkonsole
wiederzubeleben und auch ein paar meiner Programme, die ich auch auf der Windows Kommandozeile laufen lasse, aufzupeppen.
Bei den DOS-Programmen müßte ich eigentlich nur meine eigene Maus.pas unit umbauen. Das heißt, ich würde gerne die $33 Geschichten mit den zugehörigen Befehlen aus dem genannten FPC unit ersetzen. Bei den andern Geschichten bin ich noch im Tastaturzeitalter.
Ich könnte natürlich mit Lazarus oder so was anfangen, kann und möchte ich aber aus verschiedenen Gründen nicht und Free Vision ist mir auch zu komplex (Zuviele "@
[abs@]^.^msms")
Vielleicht krieg ich noch einen Tip?
Grüße Jan-Rene'
-
-
Hallo MArc,
ich verstehs immer noch nicht.
Ich dachte das Record TMouseDriver wird befüllt, wenn ich InitMouse aufrufe. Die Daten zieht sich der Compiler dann halt in Abhängigkeit des Ziel-Betriebssystems irgendwo aus den ganzen Quellen.
Die genannte Referenz läßt bei mir an dieser Stelle mehr Fragen offen als Antworten.
Bitte helft mir noch mehr auf die Sprünge. (Vielleicht auch mit 'nem Codeschnipselchen)
Jan-Rene'
-
Hi,
also ich hab sowas diesbezüglich noch nicht gemacht.
Aber rein Theoretisch müsstest du erst ein record anlegen, der auf die Maus zeigt und in diesem gibts dann attribute, (getMouseX -Y oder wie die hießen)
Und diese muss man dann stehts Aktualisieren via Schleife.
Ich schau's mir gleich an. Jetzt hast mein Interesse geweckt
Das wird geknackt
Gruss,
MArc
-
So ich wieder.
Habe das bisher hinbekommen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
program TestMouse; uses mouse; type TMouseDriver = record UseDefaultQueue: Boolean; InitDriver: procedure; DoneDriver: procedure; DetectMouse: function: Byte; ShowMouse: procedure; HideMouse: procedure; GetMouseX: function: Word; GetMouseY: function: Word; GetMouseButtons: function: Word; end; Var X,Y : Word; MyMouse: TMouseDriver; begin InitMouse; Writeln('Move mouse cursor to square 10,10 to end'); MyMouse.showMouse; Repeat X:=MyMouse.GetMouseX; Y:=MyMouse.GetMouseY; Writeln('X,Y= (',X,',',Y,')'); Until (X=9) and (Y=9); end.
Ich habe irgendwie die falsche mouse.tpu erwischt. Kannst du mir schnell deine mal geben ?
Es kommt ein "Befehl oder Dateiname nicht gefunden"
Gruss,
MArc
-
Hallo MArc,
diem Sache hat mir auch keine Ruhe gelassen.
Dein Code erzeugt bei mir auch einen Fehler
Free Pascal Compiler version 2.0.2 [2005/12/07] for i386
Copyright (c) 1993-2005 by Florian Klaempfl
Target OS: Linux for i386
Compiling /home/rene/pascal/bastel/calc/bin/v4/testmouse.pas
testmouse.pas(23,20) Warning: Variable "MyMouse" does not seem to be initialized
testmouse.pas(26,6) Error: Incompatible types: got "<procedure variable type of function:Word;Register>" expected "Word"
testmouse.pas(27,6) Error: Incompatible types: got "<procedure variable type of function:Word;Register>" expected "Word"
testmouse.pas(31,5) Fatal: There were 2 errors compiling module, stopping
testmouse.pas(31,5) Fatal: Compilation aborted
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)
Ich habe nun noch mal "rumgefrickelt".
Dann läßt sich alles compilieren.Code :1
with Mymouse do Writeln(GetMouseX, GetMouseY);
Das Programm (welches sich nicht mal richtig beenden läßt, ich weiß) hat nun folgende Wirkung, daß an der Standardeingabe in Abhängigkeit von der Mausposition eine Zeichenfolge, immerhin kommt schon mal was raus.
rene@linux:~/pascal/bastel/> ./testmouse
rene@linux:~/pascal/bastel/> T%#T% J'#J' K'#K'
bash: T%#T%: command not found
rene@linux:~/pascal/bastel/> J$#6! W' I##H#
Ich glaube, wir müssen die Typumwandlung noch hinkriegen.
Brauchst du die Unit noch?
Jan-Rene'
-
Hi rene,
ja die Unit wäre durchaus mal nicht schlecht. Ich probier das dann gleich mal mit dieser aus.
Das kompilieren an sich, hat bei mir keinen Fehler gebracht. Hm, vielleicht liegs an der Unit.
Eigentlich ist das with das gleiche, wie "." Anweisung. Auch komisch.
Ich schätze, es liegt an dem Typ, wie du schon erwähnt hast.
Das ist schonmal gut, dass er jedesmal etwas anderes ausgibt.
Ersetz doch mal das "InitMouse" mit "InitDriver". Mal schauen was da dann rauskommt.
Die Funktion wird ja bereitgestellt von TMouseDriver.
Schickst du mir grad mal die Unit ?
Beste Grüße,
MArc
-
Hi MArc
die Datei hab' ich von da: /usr/lib/fpc/2.0.2/units/i386-linux/rtl
Die Quellen hab ich nicht installiert. In der Zipdatei ist die mouse.ppu und die mouse.o drin. Ich habe hoffentlich alles erwischt. Vielleicht ist ja die komplette Installation bei dir die bessere Wahl. Ich weiß ja nicht ob du DSL hast (NEID).
Das mit dem InitDriver habe ich schon gestern probiert, hatte bei mir aber keinen Effekt.
Wenn ich InitMouse auskommentiere, passiert gar nichts, wenn ich das Programm starte.
Wir haben auch schon 62 Hits, vielleicht kann mir ja jemand von der verehrten Leserschaft auch ein bischen auf die Sprünge helfen.
MArc, ich hoffe das klappt mit dem Attachment.
Ich hab die "Pestilenz" und geh jetzt ins Bett! Heute hab ich keinen Schneid zum probieren. Sorry.
Jan-Rene'Geändert von jrx (30.05.06 um 21:54 Uhr)
-
Hallo rene,
ich glaube ich habe es geschaft.
Habe viel gelesen und viel gefummelt. Nun ist es 6 vor 12Uhr und ich geh Schlafen.
Bei mir funktioniert es, ganz ohne mouse unit.
Hier mal der Code
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
program TestMouse_3; uses DOS; var Reg: Registers; function GetMouseY:word; begin Reg.AX:=3; Intr($33,Reg); GetMouseY := Reg.DX; end; function GetMouseX:word; begin Reg.AX:=3; Intr($33,Reg); GetMouseX := Reg.CX; end; BEGIN repeat write(GetMouseX); write(' / '); writeln(GetMouseY); until (GetMouseX = 8) and (GetMouseY = 8); end.
Die Funktionen greifen jeweils direkt auf die Maus zu und lesen die Werte aus.
Probier es doch bitte aus, und berichte
Gruss,
MArc
P.S.: Ich habe auch erst vor kurzen DSL bekommen :PGeändert von MArc (30.05.06 um 23:55 Uhr)
-
Hallo MArc
Ich habs ausprobiert:
...da bin ich wieder da, wo ich angefangen, Anzeige nur 0,0 unter Linux Suse 9.2
Unter Window geht keine unserer Varianten, nicht mal die etwas hoffnungsvollere.
schau'ma'ma
Jan-René
-
Hi Jan-René,
welchen Komilier benutzt du denn?
Also bei funktioniert diese Code den ich oben gepostet habe einwandfrei.
Die Koordinaten werden richtig angezeigt.
Gruss,
MArcKryn.cms - einfach anders.
"When you're talking about webserver, as it is, with no rules, well then, baby you'd better block every tiny hole of your server!" - MArc (inspired by Bruce L.)
-
Hallo.
Ich habe da eine frage zu eurer Vorgehensweise:
Ihr wollt einen Maustreiber für Linux programmieren, ist das richtig?
Weshalb steht im vorletzten Beitrag "uses DOS" ?
Werdet ihr eine .exe aus der Pascal-Datei erstellen?
Warum nutzt ihr überhaupt Pascal für solche Dinge?
Danke.
-
Hallo chrysler,
ja, wir wollen es hinbekommen die Koordinaten der Maus herauszubekommen mithilfe von Pascal. Es wird "DOS" benötigt, damit bei mir der runtime Fehler nichtmehr erscheint
Ja, es wird eine *.exe Datei erstellt durch das kompilieren.
Wieso jan-rené, pascal benutzten möchte, steht im ersten Post.
Nachtrag: Bei Linux wird eine andere Datei erstellt, also keine *.exe.
Gruss,
MArcKryn.cms - einfach anders.
"When you're talking about webserver, as it is, with no rules, well then, baby you'd better block every tiny hole of your server!" - MArc (inspired by Bruce L.)
Ähnliche Themen
-
[C Linux] printf schreibt nicht in Konsole
Von Anbrix im Forum C/C++Antworten: 5Letzter Beitrag: 02.07.08, 12:57 -
Problem beim Snake programmieren in der Konsole
Von 3Cyb3r im Forum C/C++Antworten: 2Letzter Beitrag: 24.05.08, 10:44 -
[C#] Maus für die Konsole?
Von Drache2 im Forum .NET CaféAntworten: 0Letzter Beitrag: 13.11.07, 20:52 -
Linux-Konsole
Von b0rgi85 im Forum Linux & UnixAntworten: 4Letzter Beitrag: 16.08.07, 11:16 -
Linux Maus (Pinquin)
Von Thomas Lindner im Forum Linux & UnixAntworten: 5Letzter Beitrag: 23.09.02, 15:23





Zitieren
Login





