2. Fehler/Ungereimtheiten in den PowerBASIC-Versionen 3.0, 3.1, 3.2 & 3.5 (Teil 2)
Fehler (Bug's)/Ungereimtheiten in den PowerBASIC-Versionen 3.0, 3.1, 3.2 & 3.5 (Teil 1)
Fehler (Bug's)/Ungereimtheiten in den PowerBASIC-Versionen 3.0, 3.1, 3.2 & 3.5 (Teil 3)
2.10. Fehler 454: END FUNCTION expected
Versionen: 3.0/3.1/3.2
bekannt : Fehler in Version 3.50 beseitigt
Diese Fehler kann auftreten, sofern der kommentierte Text einer Inline-
Assemblerzeile das ASCII-154 Zeichen enthält. Lesen Sie sich bitte auch
den vorherigen Absatz durch.
2.11. Noch ein REMARK-Problem bei $ALIAS
Versionen: 3.0/3.1/3.2/3.5
bekannt : Fehler in Version 3.50 beseitigt
Der Fehler ist wieder recht einfach zu beschreiben. Sie dürfen bei der
Verwendung von $ALIAS kein ':' (ASCII 58) nach einem REMARK verwenden,
da dies PowerBASIC mit einem Fehler 462 (nicht definierte SUB/FUNCTION)
interpretiert. Dieses Problem tritt nur Aufgrund der GWBASIC Abwärts-
kompatibilität auf!
Beispiel:
$ALIAS DATA AS "_DATA" ': C-Segmente an PowerBASIC anpassen
^
führt zum Fehler 462
2.12. Der Fehler CDWRD in der deutschen OnLine-Hilfe
Versionen: 3.0 (nur deutsche Version)
In der OnLine-Hilfe hat sich ein Tipfehler eingeschlichen, statt dem
richtigen Befehl 'CDWD' wird der Befehl mit 'CDWRD' beschrieben. In den
deutshcen Handbüchern ist der Syntax aber korrekt erklärt.
Beispiel:
i??? = 1
PRINT CDWRD(i???) : 'falscher Syntax
PRINT CDWD(i???) : 'richtiger Syntax
2.13. Der Fehler CVDWRD in der deutschen OnLine-Hilfe
Versionen: 3.0 (nur deutsche Version)
Analog wir bei dem Syntaxfehler 'CDWRD' hat sich auch hierbei ein Fehler
in der OnLine-Hilfe eingeschlichen, der Syntax lautet wie im deutschen Handbuch
korrekt beschrieben 'CVDWD'.
2.14. Absturz bei Betätigen von CNTRL-C
Versionen: 3.0
bekannt : Fehler in Version 3.10 beseitigt
Dieser Fehler ist im allgemeinen bekannt und tritt nur auf wenn Sie die
Compileroption $OPTION CNTLBREAK OFF verwenden, während das BREAK-Flag
auf DOS-Ebene auf ON gesetzt ist (normalerweise ist dies aber von MS-DOS
eh auf OFF gesetzt). Betätigen Sie unter diesen Vorrausetzungen nun die
Tastenkombination CNTL-C, dann stürzt Ihr fertiges Programm gelinde
gesagt ab.
Abhilfe schafft das Sperren des BREAK-Flag's per eigener PowerBASIC-
Funktion. Dies können Sie zum Beispiel durch folgende Routinen erreichen:
SHARED BreakFlag%
FUNCTION BreakAus public
'Controll-Break-Interrupt sichern und abschalten
! mov ax, &h3300
! int &h21
! mov BreakFlag%, dx
! mov ax, &h3301
! mov dx, 0
! int &h21
END FUNCTION
FUNCTION BreakReset public
'Control-Break-Interrupt restaurieren
! mov ax, &h3301
! mov dx, BreakFlag%
! int &h21
END FUNCTION
In einigen Mailboxen befindet sich auch eine Datei namens CNTL.ZIP,
welche den offiziellen BugFixed darstellt.
2.15. Fehler bei Verwenden der Ausgabe über "CONS:" und CNTRL-C
Versionen: 3.0
bekannt : Fehler in Version 3.10 beseitigt
Dieser Fehler ist ebenfalls eine Auswirkung des CNTRL-C Bugs, während
der Ausgabe über "CONS:" kann es zu Nebeneffekten kommen. Näheres ist
mir pesönlich nicht bekannt.
2.16. Die Sache mit dem Fehler 244 in einer Stand Alone EXE-Datei
Versionen: 3.0
bekannt : Fehler in Version 3.10 beseitigt
Sollten Sie PowerBASIC 3.0 nutzen und öfters im InLine-Assembler
programmieren, so kann es in Verbindung mit den beiden internen
PowerBASIC-Funktionen:
zu dem oben genannten Fehler 244 (Bibliothek nicht vorhanden) kommen.
Dieser Fehler tritt nur in einer Stand-Alone-EXE Datei auf und nicht
innerhalb der PowerBASIC-IDE. Als Voraussetzung müssen sich die beiden
internen PowerBASIC-Funktionen innerhalb einer PowerBASIC Unit (PBU)
befinden. Als Abhilfe müssen Sie die beiden PowerBASIC-Funktionen
STRSEG/STRPTR benutzen, die Werte dann zwischenspeichern und danach auf
die betreffenden Prozessorregister schieben.
2.17. Probleme bei Verkettung mehrerer Zeilen Sourcecode
Versionen: 3.0/3.1
bekannt : Fehler in Version 3.20 beseitigt
Die PowerBASIC-IDE, sowie der Kommandozeilen-Compiler, haben allgemeine
Probleme, wenn Sie Sourcecode über mehrere Zeilen verteilen, welcher
normalerweise in eine Zeile gehört.
Beispiel:
C$ = CHR$( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)+_
CHR$( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
Gerade in Verbindung mit großen Projekten hat sich gezeigt, das der
Compiler zu einer falschen Interpretation neigt, sprich: An irgendeiner
Stelle im Sourcecode meldet der Compiler einen für Sie unerklärlichen
Fehler. In vielen Fällen bleibt der Cursor aber an richtigen Stelle
stehen.
2.18. Probleme mit dem WATCH-Fenster und mehrdimensionalen Arrays
Versionen: 3.0/3.1
bekannt : Fehler in Version 3.2 beseitigt
Das WATCH-Fenster kann keine mehrdimensionalen Arrays korrekt
darstellen.
2.19. Fehlerhafte interne Funktion/Variable: pbvScrnCols
Versionen: 3.0/3.1/3.2
bekannt : nein
Diese interne Variable soll Ihnen die Anzahl der angezeigten Bildschirmspalten
zurückliefern. In Verbindung mit allen Modies welche nicht die
40'er bzw. 80'er Spaltenanzahl verwenden, wird nicht die korrekte Anzahl
der Bildschirmspalten zurück geliefert. Solche Modies können Sie auf
jeder VGA-Karte einstellen und diverse Tools (u.a. Disk Command Center)
unterstützen dies sogar!
Abhilfe schafft hierbei wieder eine eigene Funktion:
DIM fixScrnCols AS BYTE
! mov ah, &h0f
! int &h10
! mov fixScrnCols, ah
2.20. unkorrekte interne Funktion/Variable: pbvHost
Versionen: 3.0/3.1/3.2
bekannt : nein
Das Bit 8 ist unter Microsoft Windows(NT) 3.x nicht gesetzt.
2.21. Ein kleiner Unterschied im neuen InLine-ASM der V3.1/3.2
Versionen: 3.1/3.2
bekannt : Nachbesserung bei PowerBASIC Inc. verlangt
Dieser Fehler ist recht einfach erklärt, während PowerBASIC 3.0 im
Inline-Assembler folgende Zeile zuläßt:
verweigert PowerBASIC 3.1/3.2 an dieser Stelle die Zusammenarbeit, obwohl das
Feature in der Version 3.1/3.2 neu ist.
2.22. Das dd-Problem bei PowerBASIC 3.1/3.2
Versionen: 3.1/3.2
bekannt : Feature in Version 3.5 beseitigt
Dieser Fehler ist recht schnell beschrieben, da die neuen 32Bit
&h...., &o.... &b Anweisungen als bekannt vorrausgesetzt werden.
PowerBASIC Inc. hat in Verbindung mit dem InLine-Assembler einfach die
Umsetzung vergessen!! Sie glauben mir nicht, dann probieren Sie doch
einfach folgendes:
Diese kleine Ungereimtheit wird seitens PowerBASIC Inc. mit dem 8bit
Inline Assembler begründet, aber der Inline-Assembler der Version 3.50
wurde erfreulicherweise trotzdem in dieser Richtung überarbeitet.
2.23. undokumentierte interne Variablen in PowerBASIC 3.0/3.1/3.2
Folgende interne Variablen sind in PowerBASIC 3.0 bereits vorhanden,
aber nicht dokumentiert:
pbvBinBase
pbvDefSeg
pbvHost
pbvScrnBuff
pbvSwitch
pbvVTxtX1
pbvVtxtX2
pbvVTxtY1
pbvVtxtY2
Folgende internen Varibalen sind ab V3.1 nicht mehr dokumentiert, aber
noch in Version 3.2 vorhanden:
Die Lage im Datensegment ist bei PowerBASIC 3.0 mit der Lage in
PowerBASIC 3.1/3.2 identisch.
2.24. Der PRINT-Bug in PowerBASIC 3.2
bekannt : ????
In der Version 3.2 werden Variablen vom Typ DWORD nicht mehr korrekt
beim PRINT-Befehl dargestellt:
Beispiel:
Demo??? = 1234567890
PRINT Demo???
führt zu folgender Ausgabe:
PowerBASIC 3.0/3.1: 1234567890
PowerBASIC 3.2 : 1.234568+E
Abhilfe schafft das Verwenden von PRINT USING ...
Fehler (Bug's)/Ungereimtheiten in den PowerBASIC-Versionen 3.0, 3.1, 3.2 & 3.5 (Teil 1)
Fehler (Bug's)/Ungereimtheiten in den PowerBASIC-Versionen 3.0, 3.1, 3.2 & 3.5 (Teil 3)