Bug
2. Fehler/Ungereimtheiten in den PowerBASIC-Versionen 3.0, 3.1, 3.2 & 3.5 (Teil 2)

English


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:
            GetStrLoc
            GetStrAlloc
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:
            ! mov ax, &h0A000
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:
            ! dd &h12345678
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:
    pbvRestore
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)


(c) 1995/2007 by Thomas Gohel, All rights and bug's reserved