hallo,
ich hab ein problem mit QuickBasic. ich habe eine reihe von befehlen in einem packet. dieses packet soll der rechner mehrmals gleichzeitig abarbeiten. welchen befehl muß ich verwenden?
vielen dank im vorraus
mfg
steffen
Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge
Hi!
Nun, es wäre wohl am einfachsten, wenn man dein Programm mehrfach parallel ausführen könnte. Genau genommen wäre das dann Multitasking und genau dass ist der Haken.
QBASIC ist ein DOS-Tool und solche Extras wie Multitasking sind erst 10 Jahre später in Mode gekommen... ;-)
Das geht also leider mit QBASIC nicht.
Aber du kannst dein Programm natürlich so umschreiben, dass es statt (nur) einer Spalte immer gleich mehrere verwendet. Man muss also pro Zeile mehrer Spalten bearbeiten. Das ganze geht, wenn man dein Programm etwas umstellt, FOR-Schleifen und Array verwendet und auf GOTO verzichtet, eigentlich ganz einfach.
Ich hab' das mal umgesetzt:
SCREEN 7
zeit2% = INT(RND * 2)
zeile% = 1
zeit% = 1
REM Anzahl der parallel dargestellten Spalten
Zeichenanzahl = 5
REM Spalten und Zeichen bestimmen:
FOR i = 1 TO Zeichenanzahl
RANDOMIZE TIMER
spalte%(i) = INT(RND * 39) + 1
zeichen%(i) = INT(RND * 93) + 33
NEXT
REM Kopletter Durchlauf (20 Zeilen)
FOR zeile% = 1 TO 20
REM Innere Schleife für Spalten
FOR i = 1 TO Zeichenanzahl
LOCATE zeile%, spalte%(i)
COLOR 10
PRINT CHR$(zeichen%(i))
COLOR 2
LOCATE zeile%, spalte%(i)
PRINT CHR$(zeichen%(i))
COLOR 10
LOCATE zeile% + 1, spalte%(i)
PRINT CHR$(zeichen%(i))
schleife% = 0
REM Nur IF/ELSE/ENDIF keine GOTOs mehr ;-)
1 IF schleife% = 21 THEN
COLOR 2
LOCATE zeile%, spalte%(i)
PRINT CHR$(zeichen%(i))
COLOR 8
LOCATE zeile% - 1, spalte%
PRINT CHR$(zeichen%(i))
COLOR 8
LOCATE zeile%, spalte%(i)
PRINT CHR$(zeichen%(i))
COLOR 0
ELSE
COLOR 2
LOCATE zeile% + 1, spalte%(i)
PRINT CHR$(zeichen%(i))
COLOR 8
LOCATE zeile%, spalte%(i)
PRINT CHR$(zeichen%(i))
COLOR 10
LOCATE zeile% + 1, spalte%(i)
PRINT CHR$(zeichen%(i))
END IF
REM Nur hier wird gewartet
SLEEP zeit%
NEXT
NEXT
2 END
Für den Anfang dürfte das zum Experimentieren reichen. ;-)
Falls du Fragen hast dazu hast, dann melde dich.
Bis denn
Andreas