tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
16
ZUGRIFFE
1331
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    jrx jrx ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    41
    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:
    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 .
    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.

    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'
     

  2. #2
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    Hallo,

    hilft das vielleicht weiter?

    http://www.datasource.de/programmier...pascal_01.html

    MArc
     

  3. #3
    jrx jrx ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    41
    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'
     

  4. #4
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    Hi,

    wie's aussieht brauchst du noch das hier

    damit das hier funktioniert

    Edit: Vielleicht Hier noch die Quelle.

    Gruss,
    MArc
    Geändert von MArc (27.05.06 um 00:27 Uhr)
     

  5. #5
    jrx jrx ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    41
    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'
     

  6. #6
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    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
     

  7. #7
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    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
     

  8. #8
    jrx jrx ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    41
    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".
    Code :
    1
    
    with Mymouse do Writeln(GetMouseX, GetMouseY);
    Dann läßt sich alles compilieren.
    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'
     

  9. #9
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    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
     

  10. #10
    jrx jrx ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    41
    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'
    Angehängte Dateien Angehängte Dateien
    Geändert von jrx (30.05.06 um 21:54 Uhr)
     

  11. #11
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    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 :P
    Geändert von MArc (30.05.06 um 23:55 Uhr)
     

  12. #12
    jrx jrx ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    41
    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é
     

  13. #13
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    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,
    MArc
     
    Kryn.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.)

  14. #14
    chrysler chrysler ist offline Mitglied Gold
    Registriert seit
    Oct 2005
    Beiträge
    199
    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.
     

  15. #15
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    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,
    MArc
     
    Kryn.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

  1. [C Linux] printf schreibt nicht in Konsole
    Von Anbrix im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 02.07.08, 12:57
  2. Antworten: 2
    Letzter Beitrag: 24.05.08, 10:44
  3. [C#] Maus für die Konsole?
    Von Drache2 im Forum .NET Café
    Antworten: 0
    Letzter Beitrag: 13.11.07, 20:52
  4. Linux-Konsole
    Von b0rgi85 im Forum Linux & Unix
    Antworten: 4
    Letzter Beitrag: 16.08.07, 11:16
  5. Linux Maus (Pinquin)
    Von Thomas Lindner im Forum Linux & Unix
    Antworten: 5
    Letzter Beitrag: 23.09.02, 15:23