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:

Inkey$ kostet unnötige CPU-Zeit

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



Anmeldungsdatum: 26.04.2005
Beiträge: 1
Wohnort: Karlsruhe

BeitragVerfasst am: 26.04.2005, 02:39    Titel: Inkey$ kostet unnötige CPU-Zeit Antworten mit Zitat

Hallo!
Ich habe ein Programm (Datenverwaltung), das die Cursortasten und alle alphanumerischen Tasten auswerten muss; deshalb benötige ich INKEY$.

z. B.: do:X$=Inkey$:loop while X$=""

Diese Schleife benötigt die ganze Zeit die CPU ==> fast 100%.
Das Programm wartet aber nur auf eine Eingabe. Gibt es eine Möglichkeit, in der Wartezeit die CPU einem anderen Programm zur Verfügung zu stellen.

Unter DOS war das kein Problem; aber unter Windows XP könnte man auch noch andere Programme laufen lassen. Kann man auch, aber da das BASIC-Programm so viel Rechenzeit (für nichts) benötigt, sind die anderen Programme so träääääääääge.

Wer hat einen Tipp, wie ich die obige Schleife umgehen/ändern kann.
_________________
Ich soll ein altes BASIC-Programm unter Windows XP zum laufen bringen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
K-Duke



Anmeldungsdatum: 23.04.2005
Beiträge: 8

BeitragVerfasst am: 26.04.2005, 07:08    Titel: Antworten mit Zitat

vielleicht solltest du ein "wait" dazwischen setzen, der irgendwie immer eine 10tel Sekunde (bzw. weniger oder länger wartet) das sollte in dieser zeit rechenpower freigeben (glaub ich mit den Augen rollen )
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 26.04.2005, 08:27    Titel: INT 2Fh/AX=1680h Antworten mit Zitat

Siehe dazu

http://www.ctyme.com/intr/rb-4530.htm

Codebeispiel:
Code:
' $include: 'qb.bi'

DIM dosIntEin AS RegType, dosIntAus AS RegType

DO
  DO
    t$ = INKEY$
    dosIntEin.ax = &H1680
    CALL INTERRUPT(&H2F, dosIntEin, dosIntAus)
  LOOP WHILE t$ = ""
  SELECT CASE t$
  CASE CHR$(0) + "H" ' Cursor hoch
     ... (einzelne Tasten auswerten)
  END SELECT
LOOP UNTIL t$ = CHR$(27)

_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Heizi



Anmeldungsdatum: 19.01.2005
Beiträge: 309

BeitragVerfasst am: 26.04.2005, 12:17    Titel: Antworten mit Zitat

Versuch mal unter Eigenschaften der exe die Leerlaufaktivität auf niedrig zu setzten
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 26.04.2005, 16:12    Titel: Antworten mit Zitat

Ich könnte dir auch zu freeBASIC raten.
Wenn du dort eine DO...LOOP-Schleife einbaust, nimmt sie zwar auch die komplette Prozessorzeit in Anspruch, aber wenn du dazwischen noch ein SLEEP 1 einbaust (das hier 1 msek verzögert), bekommt dein Prozessor eine Verschnaufpause, ähnlich wie beim DoEvents von VB.

Danke hier an Mecki, der mir diesen Tipp im FB-Forum gegeben hat zwinkern
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
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 QBasic. 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