 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 02.07.2006, 20:26 Titel: maus mehrmals abfragen |
|
|
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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 02.07.2006, 21:04 Titel: |
|
|
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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 02.07.2006, 21:16 Titel: |
|
|
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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 02.07.2006, 22:08 Titel: |
|
|
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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 02.07.2006, 22:34 Titel: |
|
|
is ja auch nur ein schnipsel
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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 02.07.2006, 22:42 Titel: |
|
|
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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 03.07.2006, 13:45 Titel: |
|
|
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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 03.07.2006, 15:00 Titel: |
|
|
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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 03.07.2006, 15:52 Titel: |
|
|
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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 03.07.2006, 22:30 Titel: |
|
|
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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 04.07.2006, 14:26 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 04.07.2006, 14:32 Titel: |
|
|
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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 06.07.2006, 12:24 Titel: |
|
|
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 |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 06.07.2006, 12:26 Titel: |
|
|
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 |
|
 |
|
|
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.
|
|