Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

maus mehrmals abfragen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 02.07.2006, 20:26    Titel: maus mehrmals abfragen Antworten mit Zitat

wie kann ich den status der tastenvariable wieder zurücksetzen als wäre sie nicht gedrückt worden. Warum klappt dies nicht?
Code:

screen 18
do
    taste= -1
    do
        getmouse x,y,,taste
    loop until taste = 1 or taste = 2
?"Hi"
loop until taste =2
?"Bye"
sleep


ist das ein bug, oder hab ich was falsch gemacht?
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 02.07.2006, 21:04    Titel: Antworten mit Zitat

du hast was falsch gemacht..
Der status setzt sich immer, wenn du getmouse aufrufst, dein wert wird dabei einfach überschrieben. Wenn du warten willst bis die maus wieder losgelassen wurde musst du ne schleife machen mit until taste=0.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 02.07.2006, 21:16    Titel: Antworten mit Zitat

warum wartet er dann im sub ver() nicht bis geklickt wird ?
Code:

do
    getmouse x,y,,taste
loop until taste=1

select case x
case 615 to 640:
    select case y
    case 0 to 27:
        kill "C:\standart.bmp"
        system
    end select
case 220 to 400:
select case y
case 47 to 65:
    call ver
case 75 to 100:
    call ent
end select
end select
end sub

sub ver()
    cls
    Dim bild As any ptr 'erstellt einen Pointer
    bild=imagecreate(640,30)   'hier die breite und höhe des bildes eintragen
    bload "C:\standart.bmp",bild
    Put(0,0),bild
    locate 5,1
    ?"Dateiname:"
    ?""
    ?"OK"
    do
        getmouse x,y,,taste
        a$=inkey$
        if a$<>chr$(13) then
            dateiname$=dateiname$+a$
            endif
        locate 10,1,taste
        print x,y
    loop until taste=1 
        select case x
        case 615 to 640:
            select case y
                case 0 to 27
                    system
            end select
        end select
end sub

_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 02.07.2006, 22:08    Titel: Antworten mit Zitat

Dieser CodeSchnipsel läßt sich so nicht kompilieren!
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 02.07.2006, 22:34    Titel: Antworten mit Zitat

is ja auch nur ein schnipsel happy

hier habt ihr den ganzen code
Code:

declare sub ver()
declare sub ent()
declare sub menue()
Open Command$(0) for binary as #1 'mach dich selbst auf
adr=200000        'die Adresse die bei Anhänger eingegeben
outfile$="C:\standart.bmp" 'Hier rein geht die Ausgabe

kill outfile$

open outfile$ for binary as #2

seek 1,adr

do 'Abhängen
    get #1,,a
    put #2,,a
loop until eof(1)
close 1
close 2
call menue
sub menue
Dim bild As any ptr 'erstellt einen Pointer
Screen 18  'imagecreate und bload klappt ohne screenaufruf NICHT
cls
bild=imagecreate(640,30)   'hier die breite und höhe des bildes eintragen
bload "C:\standart.bmp",bild
Put(0,0),bild
locate 3,1
?""
?"                             Datei verschluesseln"
?""
?"                             Datei entschluesseln"

do
    getmouse x,y,,taste
loop until taste=1

select case x
case 615 to 640:
    select case y
    case 0 to 27:
        kill "C:\standart.bmp"
        system
    end select
case 220 to 400:
select case y
case 47 to 65:
    call ver
case 75 to 100:
    call ent
end select
end select
end sub

sub ver()
    cls
    Dim bild As any ptr 'erstellt einen Pointer
    bild=imagecreate(640,30)   'hier die breite und höhe des bildes eintragen
    bload "C:\standart.bmp",bild
    Put(0,0),bild
    locate 5,1
    ?"Dateiname:"
    ?""
    ?"OK"
    do
        getmouse x,y,,taste
        a$=inkey$
        if a$<>chr$(13) then
            dateiname$=dateiname$+a$
            endif
        locate 10,1,taste
        print x,y
    loop until taste=1 
        select case x
        case 615 to 640:
            select case y
                case 0 to 27
                    system
            end select
        end select
       
    for i=1 to len(dateiname$)
        schluessel=schluessel + asc(mid$(dateiname$,i,1))
    next i
    open dateiname$ for input as 1
    input #1,text$
    close 1
    for i=1 to len(text$)
        text2$=text2$+chr$(asc(mid$(text$,i,1))+schluessel)
    next i
    ?"Original Text:"
    ?""
    ?text$
    ?""
    sleep 2000
    ?"Verschluesselter Text:"
    ?""
    ?text2$
    do: loop until inkey$<>""
    open dateiname$ for output as 1
    ?#1,text2$
    close 1
    call menue
end sub

sub ent()
    cls
    Dim bild As any ptr 'erstellt einen Pointer
    bild=imagecreate(640,30)   'hier die breite und höhe des bildes eintragen
    bload "standart.bmp",bild
    Put(0,0),bild
    locate 3,1
    input "Dateiname: ",dateiname$
    for i=1 to len(dateiname$)
        schluessel=schluessel + asc(mid$(dateiname$,i,1))
    next i
    open dateiname$ for input as 1
    input #1,text$
    close 1
    for i=1 to len(text$)
        text2$=text2$+chr$(asc(mid$(text$,i,1))-schluessel)
    next i
    cls
    ?"Verschluesselter Text:"
    ?""
    ?text$
    ?""
    sleep 2000
    ?"Entschluesselter Text:"
    ?""
    ?text2$
    do: loop until inkey$<>""
    open dateiname$ for output as 1
    ?#1,text2$
    close 1
    call menue
end sub

_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 02.07.2006, 22:42    Titel: Antworten mit Zitat

ohne mir jetzt den ganzen code durchzulesen - ich vermute mal, wenn man taste=1 mit der maus schaltet wird die sub aufgerufen. da wird auch wieder getmouse aufgerufen aber weil man die taste noch nicht wieder losgelassen hat ist immernoch taste=1, bau einfach mal ein "do:getmouse ,,,taste:sleep 10:loop until taste=0" an geeigneter stelle ein, das prog wartet dann bis die maus wieder losgelassen wurde. dann sollte das gehen..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 03.07.2006, 13:45    Titel: Antworten mit Zitat

aber man hat die taste doch wieder losgelassen. man klickt doch nur
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 03.07.2006, 15:00    Titel: Antworten mit Zitat

das programm ist aber schneller bei der zweiten abfrage als du die tase wieder losgelassen hast. Du lässt doch den knopf nicht nach ner mikrosekunde schon wieder los, so schnell könnte die hardwareschaltung ja kaum reagieren..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 03.07.2006, 15:52    Titel: Antworten mit Zitat

es klappt (do:getmouse x,y,,taste:loop until taste <>1)Ooooo ich bin sooo laangsam (hast ja recht, das hab ich net bedacht)
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 03.07.2006, 22:30    Titel: Antworten mit Zitat

Jeder hat seinen persönlichen Programmierstil..
..mir 'gefällt' die Sub Menue(..) so besser:
Code:
Sub Menue
  Dim Bild As Any Ptr 'erstellt einen Pointer
  Dim x, y, Taste
  Cls
  Bild=ImageCreate(640, 30)   'hier die Breite und Höhe des Bildes eintragen
  Bload BildName
  Put(0, 0), Bild
  Locate 3,1
  ?
  ?"                             Datei verschluesseln"
  ?
  ?"                             Datei entschluesseln"
  Do
    GetMouse x, y,, Taste
  Loop Until Taste=1
  If CheckMousePos(x, y, 615, 640, 0, 27) Then
    Kill BildName
    End
  End If
  If CheckMousePos(x, y, 220, 400, 47, 65) Then Ver
  If CheckMousePos(x, y, 220, 400, 75, 100) Then Ent
End Sub
Die Verwendung von System ist nix gut(s. Hilfe)
Und wenn du kein CheckMousePos(..) hast, nimm das..
GetMouse ist absichtlich nicht in CheckMousePos, damit sich die Werte nicht ändern können..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 04.07.2006, 14:26    Titel: Antworten mit Zitat

oda so

Code:

Sub Menue
  Dim Bild As Any Ptr 'erstellt einen Pointer
  Dim x, y, Taste
  Cls
  Bild=ImageCreate(640, 30)   'hier die Breite und Höhe des Bildes eintragen
  Bload BildName
  Put(0, 0), Bild
  Locate 3,1
  ?
  ?"                             Datei verschluesseln"
  ?
  ?"                             Datei entschluesseln"
  Do
    GetMouse x, y,, Taste
  Loop Until Taste=1
  If CheckMousePos(x, y, 615, 640, 0, 27) Then
    Kill BildName
    End
  ElseIf CheckMousePos(x, y, 220, 400, 47, 65) Then
    Ver
  ElseIf CheckMousePos(x, y, 220, 400, 75, 100) Then
    call Ent
endif
End Sub


wäre es nicht sinnvoll checkmousepos fest in FB zu integrieren ?
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.07.2006, 14:32    Titel: Antworten mit Zitat

V1ctor will eigentlich keine neuen Befehle mehr hinzufügen...

Was anderes: Ein
Code:

Do
 GetMouse x, y,, Taste
Loop Until Taste=1

sollte man vermeiden. Lieber eine Pause dazwischen, damit der Prozessor nicht überlastet wird:
Code:

Do
 GetMouse x, y,, Taste
 Sleep 5
Loop Until Taste=1

Denn da ist sofortige Reaktionszeit wirklich nicht von Nöten und eine Pause von 5ms ist somit zu verkraften.

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 06.07.2006, 12:24    Titel: Antworten mit Zitat

Hi alphonsospringer,
kannste mal probieren, ob GetMousePos.Bas in dein Programm paßt?
Ich hatte es mir neulich mal überlegt, habe aber z.Z. keine Anwendung dafür..
Rückmeldung wäre nett..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
alfonsospringer



Anmeldungsdatum: 27.04.2006
Beiträge: 445

BeitragVerfasst am: 06.07.2006, 12:26    Titel: Antworten mit Zitat

gute idee, aber passt bei mir leider nicht rein.
_________________
Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia

ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz