Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
thomas.kuebler
Anmeldungsdatum: 26.04.2005 Beiträge: 1 Wohnort: Karlsruhe
|
Verfasst am: 26.04.2005, 02:39 Titel: Inkey$ kostet unnötige CPU-Zeit |
|
|
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 |
|
 |
K-Duke
Anmeldungsdatum: 23.04.2005 Beiträge: 8
|
Verfasst am: 26.04.2005, 07:08 Titel: |
|
|
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 ) |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 26.04.2005, 08:27 Titel: INT 2Fh/AX=1680h |
|
|
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 |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 26.04.2005, 12:17 Titel: |
|
|
Versuch mal unter Eigenschaften der exe die Leerlaufaktivität auf niedrig zu setzten |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 26.04.2005, 16:12 Titel: |
|
|
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  _________________ 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 |
|
 |
|