Home |
Tipps zur QBASIC und Quick BASIC Programmierung |
Auswahlseite |
Tipps für die optimale Programmierung
|
BC und QBAufruf des Compilers BC: Aufruf QuickBASIC:
BC und QB haben folgende Optionen, die mit einem / oder - eingeleitet werden:
BC QB j=ja n=nein a=automatisch d=im Dialog anzugeben
/A j n Erzeugt Assemblercodeliste
/AH j j Dynamische Felder dürfen den gesamten Speicherplatz einnehmen
/B n j Ermöglicht den Einsatz eines Monochrommonitors mit einer
Farbgrafikkarte (CGA).
/C: j j Puffergröße für COM
/CMD n j Parameter für COMMAND$
/D j a Laufzeit Überprüfung ein
/E j a ON ERROR mit RESUME Zeilennummer wird verwendet
/G n j Beim CGA soll der Bildschirm schnellstmöglich aktualisiert
werden.
(Problem des Flimmerns beim CGA)
/H n j Verwendet die höchstmögliche Bildschirmauflösung
/L n j Bibliotheksname, ohne Angabe: qb.qlb
/MBF j j Verwende MBF (Microsoft Binärformat)
/NOHI n j Ermöglicht den Einsatz eines Monitors ohne intensive Anzeige
/O j d Erzeuge eigenständiges .EXE-Programm
/R j n Speichere Datenfelder zeilenweise
/RUN n j Starte Quelldatei sofort
/S j a Zeichenkettenkonstanten nicht in Symboltabelle eintragen
/V j a Ereignisverfolgung zwischen einzelnen Anweisungen
/W j a Ereignisverfolgung zwischen Zeilennummern/ Zeilenmarken
/X j a ON ERROR mit RESUME, RESUME NEXT oder RESUME 0 wird verwendet
/ZD j n Zeilennummernverwendung für SYMDEB
/ZI j n Debug-Informationen für CodeView
/A bei BC und QBErzeugt ein Listing von disassembliertem Objektcode für jede Quellzeile und zeigt den vom Compiler erzeugten Assemblercode/AH bei BC und QBErmöglicht es, dynamische Felder, die Datensätze, Zeichenketten fester Länge oder numerische Daten enthalten, den gesamten verfügbaren Speicher einzunehmen.Wenn diese Option nicht angegeben ist, beträgt die maximale Größe pro Datenfeld 64 K. Diese Option wirkt sich nicht auf die Übergabe von Daten an Prozeduren aus. /B bei QBErmöglicht den Einsatz eines monochromen Farbmischmonitors mit einer CGA- Farbgrafikkarte./C bei BC und QB/C:PuffergrößeSetzt für jeden seriellen Schnittstellenadapter die Größe des Puffers, der die Daten darüber empfängt. Die Option hat keine Auswirkungen, falls ein solcher Adapter nicht vorhanden ist. Die Standard-Puffergröße für beide Anschlüsse beträgt
insgesamt 512 Bytes; die maximale Größe ist 32767 Bytes. /D bei BCErzeugt Debug-Code für die Laufzeit-Fehlerprüfung und aktiviert CTRL-BREAK.Diese Option ist identisch mit der Option "Debug-Code erstellen" des Befehls "EXE-Datei erstellen" aus dem Menü "Ausführen" innerhalb der QuickBASIC-Umgebung. /E bei BCZeigt das Vorhandensein von ON ERROR mit RESUME Zeilennummer an. Vergleiche Option /X/H bei QBDie Bildschirmanzeige erscheint in der höchsten von der Hardware unterstützten Auflösung./MBF bei BC und QBkonvertiert Zahlen im Microsoft-Binär-Format(MBF) in das IEEE-Format.Hintergrund Mit der Option /MBF kann QuickBASIC das alte MBF-Format früherer BASIC-Varianten (wie BASICA, GWBASIC, QuickBASIC vor Version 4.0) verarbeiten. Die Unterschiede sind nur für Direktzugriffsdateien mit Realdaten relevant. Die Befehle CVS, CVD, MKS$ und MKD$ verarbeiten das IEEE-Format, die Befehle CVSMBF, CVDMBF, MKSMBF$ und MKDMBF$ verarbeiten MBF. Durch Setzen der Option /MBF werden die Befehle CVS, CVD, MKS$ und MKD$ auf die Behandlung von MBF umgemünzt. /NOHI bei QBErlaubt die Verwendung eines Monitors, der keine Intensivanzeige unterstützt./O bei BCErzeugt ein eigenständiges .EXE-Programm, das ohne Laufzeitmodul ablaufen kann./R bei BCSpeichere Datenfelder zeilenweise. Normalerweise speichert QuickBASIC Datenfelder spaltenweise./S bei BCZeichenkettenkonstanten (diese sind im Quellprogramm in " eingekleidet) sollen nicht in die Symboltabelle eintragen werden.Diese Option ist beim Auftreten der Fehlermeldung "Out of String Space" in einem Programm zu verwenden, in dem zu viele Zeichenkettenkonstanten vorkommen. /V bei BCSchaltet die Ereignisverfolgung für COM (Datenübertragung), PEN (Lichtstift), STRIG (Joystick), TIMER (Uhr), PLAY (Musikpuffer) und KEY (Tasten) ein. Diese Option ist zu verwenden, wenn zwischen den einzelnen Anweisungen auftretende Ereignisse geprüft werden sollen./W bei BCSchaltet die Ereignisverfolgung fürCOM (Datenübertragung), PEN (Lichtstift), STRIG (Joystick), TIMER (Uhr), PLAY (Musikpuffer) und KEY (Tasten)ein. Diese Option ist zu verwenden, wenn nur zwischen Zeilennummern bzw. Zeilenmarken, nicht jedoch zwischen einzelnen Anweisungen auftretende Ereignisse geprüft werden sollen. /X bei BCZeigt das Vorhandensein von ON ERROR mit RESUME, ON ERROR mit RESUME NEXT, oder ON ERROR mit RESUME 0 an. Vergleiche Option /E/ZD bei BCErzeugt eine Objektdatei, die Datensätze mit Zeilennummern enthält, die den Zeilennummern der Quelldatei entsprechen. Diese Option ist zur Fehlerbeseitigung auf Quellebene mit Hilfe des "Microsoft Symbolic Debug Utility" die mit dem "Microsoft Macro Assembler" ab Version 4.0 verfügbar ist, behilflich./ZI bei BCErzeugt eine Objektdatei, die Debug-Informationen enthält. Diese Option ist zur Fehlerbeseitigung mit Hilfe des "Microsoft Code View Debuggers", der mit dem "Microsoft Macro Assembler" ab Version 5.0 verfügbar ist, behilflich. |
FEHLER und FehlercodesDie Fehler F01 bis F30 betreffen Programm- und Syntaxfehler, F01 NEXT without FOR F01 NEXT without FOR Zu einer NEXT-Anweisung existiert keine vorangegangene FOR-Anweisung, oder eine hinter NEXT angegebene Variable stimmt nicht mit der bei zugehörigen FOR-Anweisung angegebenen Laufvariablen überein. F02 Syntax Error Der auszuführende Befehl ist nicht verständlich. Seine Syntax ist fehlerhaft. F03 RETURN without GOSUB Bei der Ausführung wurde ein RETURN entdeckt, ohne dass vorher ein entsprechendes GOSUB ausgeführt wurde. F04 Out of data Eine READ-Anweisung findet keine DATA- Daten. F05 Illegal function call Es wurde versucht, einen Parameter außerhalb des gültigen Bereiches an eine Funktion zu übergeben. Beispiele: -Die Satznr. bei GET# / PUT# ist 0 oder negativ, F06 Overflow Das Ergebnis einer Berechnung oder eine angegebene Zahl ist zu groß und deshalb nicht darstellbar. F07 Out of Memory Das Programm ist zu groß, so dass für Variablen und Stack nicht mehr genügend Platz zur Verfügung steht, oder die Verschachtelung bei stackbelastenden Anweisungen ist zu tief, oder aufgrund von nicht korrekt beendeten Schleifen und Unterprogrammen wächst der Stack bis zum Programmkollaps. F08 Undefined Linenumber Es wurde Bezug auf eine nicht vorhandene Zeilennummer genommen. F09 Subscript out of range Ein Feldelement wurde angesprochen, bei dem der Index entweder größer als der bei DIM festgelegte oder kleiner war als der mit OPTION BASE festgelegte; oder eine falsche Zahl von Dimensionen wurde verwendet. F10 Duplicate definition Es wurde versucht, ein bereits definiertes Feld nochmals zu definieren. Weiterhin kann es sein, dass der Befehl OPTION BASE zu spät (d.h., erst nach einer Felddimensionierung) verwendet wurde. F11 Division by Zero Es wurde versucht, durch 0 zu dividieren, oder das Ergebnis 0 soll mit einer negativen Zahl potenziert werden. Ggf. muss vor der Division auf 0 geprüft werden (Programmanpassung) F12 Illegal direct Im Direkt- Modus soll eine Funktion aufgerufen werden, die im Direkt- Modus nicht erlaubt ist. Situation umgehen oder ein Miniprogramm schreiben. F13 Type Mismatch Bei String- und/oder mathematischen Operationen stimmen die verwendeten Variablen vom Typ her nicht überein. F14 Out of String Space Trotz Bereinigung des Hauptspeichers von nicht benötigten Zeichenketten kann das System eine Zeichenkette nicht mehr ablegen. Das Programm muss korrigiert werden, notfalls muss die Logik verändert werden. F15 String too long Es wurde versucht, einen String zu erzeugen, der die maximal mögliche Stringlänge überschreitet. F16 String Formula too complex Die geplante Stringoperation ist so komplex, dass sie der Computer nicht versteht. neu (und einfacher) formulieren! F17 Can't Continue Es wurde entweder CONT ohne voriges STOP ausgeführt, oder nach einem STOP wurde das Programm verändert. F19 No RESUME Nach einem ON ERROR GOTO wird festgestellt, dass die Fehlerbehandlungsroutine kein RESUME enthält. F20 RESUME without ERROR Das Programm lief auf eine RESUME- Anweisung, ohne dass vorher ein Fehler auftrat. F22 Missing Operand Ein Ausdruck (numerisch, logisch oder Zeichenkette) enthält einen Operator (wie +, -, AND, usw.), dem kein Operand folgt. F23 Line Buffer Overflow Es wurde eine Zeile eingegeben, die länger ist als 255 Zeichen. Zeile durch Aufteilen verkürzen! F24 Device Timeout Die erwartete Antwort von einem Peripheriegerät ist nicht innerhalb der vorgegebenen Zeitgrenze eingetroffen. Prüfen Sie, ob das Gerät vorhanden und eingeschaltet ist. Bei COM- Operationen kann man mit den Parametern CS Zeit, DS Zeit und CD Zeit längere Wartezeiten vorgeben oder die Signalprüfung abschalten. Weiterhin kann mit einer Befehlsfolge F25 Device Fault Das angesprochene Gerät zeigt einen Hardwarfehler F26 FOR without NEXT Für das auszuführende FOR ist im Programm kein NEXT vorhanden. F27 Out of Paper Der angesprochene Drucker meldet Papierende Drucker mit Papier versorgen, ggf. einschalten und Statusanzeige am Drucker prüfen. F29 WHILE without WEND Für das auszuführende WHILE ist im Programm kein WEND vorhanden. F30 WEND without WHILE Für das auszuführende WEND ist im Programm kein WHILE vorhanden. F50 Field Overflow Es wurde versucht, das FIELD größer zu machen als die bei OPEN angegebene Satzlänge. F51 Internal Error Die Systemkomponente DOS diagnostiziert einen internen Fehler. Falls der Fehler reproduzierbar ist, muss das Betriebssystem geprüft werden. Am BASIC-Programm liegt es nicht! F52 Bad File Number Es wurde versucht, eine Datei anzusprechen, die nicht eröffnet wurde, oder die Dateinummer liegt außerhalb des zulässigen Rahmens, oder die maximal mögliche Anzahl Dateien ist bereits eröffnet. Programm korrigieren, ggf. den Eintrag in der Datei CONFIG.SYS prüfen. F53 File not found Die angesprochene Datei kann nicht gefunden werden. Dateispezifikation prüfen. Nachsehen, wo die Datei wirklich ist. F54 Bad File Mode Es wird versucht, mit einer Datei oder einem Gerät eine Operation durchzuführen, für die die Datei nicht geeignet ist (z.B. wird versucht, vom Drucker etwas zu lesen). F55 File already open Eine bereits eröffnete Datei soll nochmals eröffnet werden. Der gleiche Fehler wird auch gemeldet, wenn eine geöffnete Datei mit KILL gelöscht, oder mit NAME umbenannt werden soll. F57 Device I/O-Error Bei einer Lese- oder Schreiboperation trat ein nicht behebbarer Fehler auf. Falls DFÜ (COM)-Schnittstelle: Kabel und Geräte prüfen. F58 File already exists Beim Umbenennen einer Datei wurde ein neuer Name gewählt, der bereits vorhanden ist. F61 Disk full Auf dem Zieldatenträger ist kein Platz mehr frei F62 Input past End Das Programm versucht, eine sequentielle Datei hinter ihrem Dateiende zu lesen. Programm korrigieren. Es sollte EOF zur Überprüfung des Dateiendes eingesetzt werden. F63 Bad Record Number In einer GET- oder PUT- Anweisung für eine Datei mit wahlfreiem Zugriff wurde eine Satznummer angesprochen, die entweder kleiner als 1 oder größer als 16777215 ist. F64 Bad File Name In einer FILES-, KILL-, LOAD-, OPEN- oder SAVE-Anweisung wurde ein ungültiger Dateiname verwendet. F66 Direct Statement in File Beim Laden einer ASCII- Quellprogrammdatei wird eine Anweisung ohne Zeilennummer gefunden. Bei QuickBASIC kann dieser Fehler nicht gemeldet werden. F67 Too many Files In der Directory des Datenträgers ist kein Platz für weitere Einträge. Wählen Sie einen anderen Datenträger oder ein anderes Unterverzeichnis, löschen Sie nicht mehr benötigte Dateien, archivieren Sie Dateien! F68 Device unavailable Es wird versucht, eine Datei auf einem nicht vorhandenen Gerät anzusprechen. Überprüfen Sie, ob es am Programm oder am Gerät liegt. F69 Communications Buffer Overflow Der Datenpuffer der Kommunikationsschnittstelle ist übergelaufen. Es liegt ein Soft- oder Hardwarefehler vor. Wenn die Hardware in Ordnung ist, kann es die Software sein). Wenn es sich um Empfangsdaten handelt, hilft eventuell ein größerer Puffer (Option /C:<Puffer> beim Aufruf von QuickBASIC) oder eine passende ON ERROR GOTO- Behandlung. F70 Permission denied 3 Ursachen sind möglich: Bei Diskette: sie ist schreibgeschützt oder das Laufwerk ist defekt. Bei Netzwerkbetrieb: es steht eine Sperre an - dann muss man warten. Bei Netzwerkbetrieb: der Befehl UNLOCK wurde mit Parametern aufgerufen, die nicht zum vorherigen LOCK-Befehl passen. F71 Disk not ready Der Datenträger ist nicht bereit. Warten bis das Laufwerk bereit ist, ggf. Laufwerk und Datenträger prüfen F72 Disk Media Error Beim Lesen oder Schreiben wurde ein Hardwarefehler gemeldet. F74 Rename across Disks In den Dateispezifikationen fürs Umbenennen sind unterschiedliche Laufwerke angegeben. Rename funktioniert nur innerhalb der gleichen Partition. F75 Path/File Access Error Die angegebene Pfad/Dateispezifikation enthält einen Fehler. F76 Path not found Die angegebene Pfadspezifikation ist von der Syntax her korrekt, nur den Pfad gibt es nicht. |