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:

Probleme bei Konvertierung von QB4.5 zu FB
Gehe zu Seite Zurück  1, 2, 3, 4
 
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
TimesChange



Anmeldungsdatum: 20.11.2013
Beiträge: 85

BeitragVerfasst am: 13.12.2013, 21:18    Titel: Re: Shorthand operators und __SLEEP Antworten mit Zitat

Sebastian hat Folgendes geschrieben:
...Von daher ist es immer empfehlenswert, für eine abgrenzbare Frage immer einen separaten Frage-Thread aufzumachen


Ich gelobe Besserung zwinkern
Die nächste Frage zu eine anderen Thema kommt gesondert...

Sebastian hat Folgendes geschrieben:
... Könnte es vielleicht helfen, __SLEEP (2000, 1) mit Klammern zu verwenden, damit das zweite Argument (Flag) erkannt wird?


In Klammern wird auch nicht akzeptiert, es kommt wieder der Fehler "Argument count mismatch".

Aber nemored's Variante mit __SLEEP 1 funktioniert jetzt wunderbar.
Ich habe ehrlich gesagt keine Ahnung, warum das zuvor auch mit __SLEEP nicht ging bzw. zu viel zu langen Verzögerungszeiten geführt hat verwundert
Dann brauche ich auch keine Timer-Funktion, mir geht es nur darum die Prozessorauslastung niedrig zu halten während das Programm auf eine Eingabe wartet.

Grüße
Rainer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 565
Wohnort: Jüterbog

BeitragVerfasst am: 14.12.2013, 18:28    Titel: Antworten mit Zitat

Also wenn du jetzt ein "MillisekundenSLEEP" hast könntest du ja in deiner Holzeich() alles mit Multikey lösen und die entsprechende Tastaturwiederholrate selbst programmieren. Mach ich doch glatt nochmal Werbung für meinen Code grinsen :
Code:

#include "fbgfx.bi"
using FB
screen 17


declare function CheckSpaceBar as string

dim as string char
do
  sleep 1'<-- in deinem Fall __SLEEP 1? ich komme nicht aus der QB Ecke ;)
  char=CheckSpaceBar
  if char=" " then print "Leertaste"; else print".";
loop until inkey = chr(27)
end



function CheckSpaceBar as string
  function=""
  static charmem as string
  static holdtimer as double
  static holdstatus as integer
  dim as string char
  char=""

  if multikey(SC_SPACE) then char=" "

  'wenn keine Taste gedrückt wurde,statischen Variblen für den "Haltemodus" zurücksetzen
  if char="" then
    holdstatus=0
    holdtimer=0
  end if

  if charmem=char then
    'wenn Taste gehalten und Pause vorbei, "Triggermodus", schnelle Wiederholung der Zeichen
    if holdstatus=2 and timer >= holdtimer then
      holdtimer=timer+.05'Pausenlänge .05 Sekunden, holdtimer ein Zeitpunkt in der "Zukunft"
      function=char
    end if

    'wenn Taste gehalten, überprüfen ob Pause zu ende ist, wenn ja Triggermodus initiieren...
    if holdstatus=1 and timer >= holdtimer then
      holdstatus=2
    end if
    'wenn Taste gehalten(charmem=char) Pause initiieren...
    if holdstatus=0 then
      holdtimer=timer+.8'Pausenlänge .8 Sekunden, holdtimer ein Zeitpunkt in der"Zukunft"
      holdstatus=1
    end if
    'wenn Taste "frisch" gedrückt, einmal Zeichen ausgeben...
  else'charmem<>char
    function=char
  end if

  charmem=char
end function


Das Beispiel fragt nur SPACE ab. Aber unabhängig wie oft die Routine durchlaufen wird(jeder "." ein Durchlauf), durch die Timersteuerung in der Sub hast du nicht zuviele Zeichen auf einmal und kannst die Pause nach Anschlag und die Wiederholrate selbst bestimmen.

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
TimesChange



Anmeldungsdatum: 20.11.2013
Beiträge: 85

BeitragVerfasst am: 14.12.2013, 22:20    Titel: Antworten mit Zitat

@mutton:

Kurz zum Verständnis:

Code:
dim as string char
  char=""

führt dazu, dass die Variable <char> bei jedem Aufruf von CheckSpaceBar neu definiert (und auf "" gesetzt ?) wird?
Während bei
Code:
static charmem as string
für die Variable <charmem> nur bei ersten Aufruf Speicherplatz reserviert wird, der Inhalt bleibt zwischen den Aufrufen erhalten?

Grüße
Rainer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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
Gehe zu Seite Zurück  1, 2, 3, 4
Seite 4 von 4

 
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