******************************************************************************* * * GFA-BASIC - Das clevere BASIC aus deutschen Landen * ================================================== * Artikel von Thomas Antoni, 13.10.05 - 25.11.20 * * V O R A B V E R S I O N * ******************************************************************************* Inhalt =============================================================================== - Allgemeines zu GFA-BASIC - GFA-BASIC für DOS . Preise und Lieferformen . Die Entwicklungsumgebung . Die Spracheigenschaften . Der Befehlssatz . Erstellung grafischer Bedienungsoberflächen - GFA-BASIC 16 Bit für MS-Windows 3.x . Preise und Lieferformen . Die Entwicklungsumgebung . Die Spracheigenschaften . Der Befehlssatz ((FEHLT noch)) . Erstellung grafischer Bedienungsoberflächen - GFA-BASIC 32 Bit für MS-Windows 95...XP . Preise und Lieferformen . Die Entwicklungsumgebung . Die Spracheigenschaften - GFA-BASIC 32 - Freeware-Version für Windows 95...10 - Webseiten zu GFA-BASIC - Aus dem eBay-Angebot eines GFA-BASIC Interpreters für DOS (25.12.2005) Allgemeines zu GFA-BASIC =============================================================================== GFA-BASIC stammt von dem Mönchengladbacher Softwarehaus GFA Software Technologies GmbH (www.gfasoft.gfa.net/de/). Die kleine Entwicklungsmannschaft um Frank Qstrowski (ca. 1961 - 2011) ist eine der wenigen deutschen Compilerschmieden. Ein sehr erfolgreiches GFA-Produkt war der äußerst beliebte und leistungsfähige Compiler GFA-BASIC für den Atari ST. Dieser kam 1986 auf den Markt. 1988 folgte eine nicht ganz so erfolgreiche Version für den Commodore Amiga. Die geringe Verbreitung der Amiga-Version lag vermutlich daran, dass der Amiga standardmäßig bereits über das leistungsfähige, wenn auch langsame AmigaBASIC verfügte. Im November 1990 erschien der erste GFA-BASIC-Compiler für MS-DOS. Später folgten die Versionen "GFA-BASIC 16 Bit für Windows 3.x" und Ende 1999 "GFA-BASIC 32 Bit für Windows 95/98/NT/Me/XP". Es gab sogar Versionen für die Betriebssysteme OS/2 und SCO-Unix, die Ende 1990 vorgestellt wurden, aber nicht über das Beta-Stadium hinauskamen. Alle GFA-BASIC-Compiler sind untereinander sehr weitgehend kompatibel. GFA-BASIC ist wie Q(uick)Basic ein modernes BASIC und dem alten Standard-BASIC weit überlegen. Die Sprache bindet Merkmale von Pascal und C ein und bietet viele Grafikfunktionen Die vielen Befehle zum Steuerung des Programmflusses wie IF..THEN...ELSE, DO...LOOP und SELECT...CASE...ENDSELECT machen den GOTO-Befehl überflüssig und ermöglichen einen professionellen, sauber strukturierten Programmierstil. Da ist es nur konsequent, dass Zeilennummern mehr erforderlich und auch nicht erlaubt sind. Mnemotechnische Sprungmarken (Labels) werden aber unterstützt, auch wenn diese bei einem gepflegten Programmierstil nicht mehr unbedingt erforderlich sind. Der mächtige Editor kann Schleifen- und Funktionselemente "falten". Traditionell sind alle GFA-BASIC Compiler (außer der 32-Bit-Version) zu 100% in Assembler programmiert und erzeugen hochoptimierten Code. Daher laufen alle Aktionen in der Entwicklungsumgebung, die Compiliervorgänge und auch die erzeugten Programme mit einer atemberaubenden Geschwindigkeit ab - in vielen Fällen sogar noch deutlich schneller als bei dem wegen seiner aberwitzigen Geschwindigkeit hochgelobten PowerBASIC. Die GFA-BASIC- Entwicklungsumgebung ist extrem schlank und benötigt nur wenig Resourcen. Selbst die 32-Bit-Version läuft noch problemlos auf einem alten 486er-PC. Weitere Stärken von GFA-BASIC liegen - im "Number Crunching" mit einer Vielzahl mathematischer Funktionen - in der Grafik-Programmierung mit vielen mächtigen Befehlen - in der extrem einfachen Erstellung grafischer, mausbedienbarer Bedienungsoberfächen mit Menüs und Dialogboxen. All das erfreut das Herz des Programmierers bereits bei der MS-DOS-Version von GFA-BASIC. Der Haken an GFA-BASIC sind die für Hobby-Programmierer recht hohen Preise. Für die DOS-Version zahlt man 128 EUR, die Windows 32-Bit-Version kostet 536 EUR. Aber es gibt für alle GFA-BASIC-Varianten Trial-Versionen, die nur in der Anzahl der Quellsprachezeilen beschränkt sind und zum Hineinschnuppern in GFA-BASIC völlig ausreichen. Ein weiterer Nachteil liegt darin, dass GFA-BASIC heutzutage recht wenig verbreitet ist. Es gibt im Internet nur wenig Unterstüzung in Form von Tutorials, Foren und downloadbaren Beispielprogrammen. Heute wird GFA-BASIC leider nicht mehr weiterentwickelt. Die GFA-Webseite www.gfasoft.gfa.net ist seit Anfang 2002 offensichtlich nicht mehr aktualisiert worden und viele Download-Dateien sind nicht mehr erreichbar. Bestellungen und Support- Anfragen werden oft nur sehr schleppend beantwortet. Schade! GFA-BASIC für DOS =============================================================================== Preise und Lieferformen ------------------------ - GFA-BASIC für DOS ist leider keine Freeware, sondern kostet happig Geld. Die neueste Version ist V4.55. Es gibt drei Lieferformen: . Der Interpreter kostet 92 EUR . Der Compiler kostet 46 EUR . Das Kombipaket mit Interpreter und Compiler kostet 128 EUR Außerdem gibt es noch ein dBase-Interface für 25 EUR (alle Preise gemäß der GFA-Preisliste von 07/2002) - Die Firma GFA teilte mir im Jahr 2000 auf eine E-Mail-Anfrage mit, dass es auch stark im Preis reduzierte Schüler-Lizenzen gibt. - Es ist eine kostenlose Trial-Version des Interpreters verfügbar, die auf 333 Quellsprachezeilen beschränkt ist, ansonsten aber den vollen Funktionsumfang hat. - Beim Interpreter (auch bei der Trial-Version) ist der Compiler GFA2EXE.EXE enthalten, der über die Kommandozeile aufgerufen wird und keine eigene Bedienoberfläche hat. Damit lassen sich EXE-Dateien erstellen, die für den Ablauf allerdings das 96 KB große Runtime-Modul GFABA5IC.OVL benötigen. - Beim Interpreter wird der "Run-Only-Interpreter" GFARO.EXE mitgeliefert, der lizenzfrei zusammen mit erstellten *.GFA-Quellspracheprogrammen an die Anwender weitergegeben werden kann und keinen Editor beinhaltet. - Der Compiler beinhaltet auch einen Linker und hat eine eigene Bedienungsoberfläche. Er kann eigenständige EXE-Programme erzeigen, die keinerlei Runtime-Module benötigen. Die Entwicklungsumgebung ------------------------ - Die Entwicklungsumgebung hat einen komfortablen Editor, unterstützt die Maus und verfügt über ein Direkt-Fenster. Das Arbeiten mit der Zwischenablage ist leider etwas unkomfortabel. Textpassagen lassen sich nicht direkt mit der Maus markieren, sondern nur mit "Block"-Befehlen. - Die Editierfunktionen sind für Personen, die Windows gewohnt sind, etwas befremdlich. Will man etwa mitten in einer Zeile einen Zeilenumbruch einfügen so muss man statt der Enter-Taste die Tastenfolge [Strg+P], [Enter], [Strg+O] eingeben. An diese Ecken und Kanten kann man sich aber schnell gewöhnen. Viele der Tastenbelegungen stammen wohl noch aus der Atari-Version von GFA-BASIC. - Mehrere durch Doppelpunkte voneinander getrennte Befehle in einer Zeile sind nicht möglich. In einer Zeile können aber mehrere Wertzuweisungen stehen, die durch Kommas voneinander getrennt sind, z.B. a = 3, b = 4 . - Bei der Programeingabe im Editor erfolgt eine sofortige Syntax-Kontrolle. Ähnlich wie bei QBasic werden Schlüsselworte in Großbuchstaben umgewandelt. Bei Syntaxfehler ertönt im Editor bei der Zeilenfortschaltung ein Piepston und der Cursor wird auf die Fehlerstelle gesetzt. Aussagekräftige Fehlermelde- Texte wie bei QBasic vermisst man aber schmerzlich. - Viele Befehle sind über Kürzel bequem eingebbar. "f i 1 10" wird z.B. nach Betätigen der Eingabetaste automatisch in "FOR i=1 TO 10" umgewandelt. - Schleifenkörper, IF THEN /ELSE Zweige und SELECT CASE-Passagen werden vom Editor automatisch eingerückt. Das ist eine große Erleichterung für die Gestaltung gut lesbarer Programme. - Standardmäßig verwendet GFA-BASIC für Quellspracheprogramme das spezielle .GFA-Format. Mit "File | Write" kann man sein Programm aber auch als normale ASCII-Textdatei abspeichern, die von beliebigen Editoren und Textverarbeitungen lesbar ist. Mit "File | Merge..." lässt sich eine .LST- Datei wieder in den GFA-BASIC-Editor einlesen. - Eine Online-Hilfe wird schmerzlich vermisst. Da wird einem erst klar, wie nützlich die ausgezeichnete, kontextsensitive Online-Hilfe bei QBasic und QuickBASIC ist. Ohne ein häufiges Nachschlagen in der ca. 800 Seiten umfassenden gedruckten Dokumentation ist die Erstellung anspruchsvoller Programme fast unmöglich. Die Dokumentation ist auch in deutscher Sprache erhältlich und wird in Form von zwei dicken Ringhanbüchern ausgeliefert, ein Referenzhandbuch und ein Lehrbuch für ausgesuchte Programmiertechniken. Wer die Handbücher nicht besitzt, weil er z.B. die Trial-Version verwendet, kann sich zur Not mit der Online-Hilfe der Windows 16 Bit Version behelfen, deren Befehle weitgehend identisch mit denjenigen der DOS-Version sind. Die Spracheigenschaften ----------------------- - Es gibt keine 64 KB-Grenze für Programmcode und Variablen. Für Programmcode und Daten stehen in Summe ca. 300 KB zur Verfügung. Ein String darf zwar wie in anderen BASICs nur 32 KB lang sein, die Gesamtgröße aller Strings wird aber nur durch die oben genannte 300-KB-Grenze beschränkt. - Der erweiterte EMS-Speicher lässt sich zum schnellen Zwischenspeichern von Daten nutzen. Mit EVAIL kann man den verfügbaren Speicherplatz im MS-Bereich wie folgt abfragen: EAVAIL bloecke PRINT "Es sind "; bloecke * 16;" KB im EMS-verfuegbar" Ist kein EMS-Speicher verfügbar oder reicht seine Größe nicht aus, nährt sich GFA-BASIC von einer Auslagerungsdatei auf der Festplatte. - Zusätzlich zu den gewohnten Datentypen 32-Bit-Gleitpunkt, 16-Bit- und 32- Bit- Ganzzahl mit Vorzeichen und String gibt es noch die Datentypen Bit/Bool, Byte und maximal 6-dimensionale Felder. Datenstrukturen bzw. Verbundfelder werden mit TYPE...END-TYPE unterstützt. Damit unterstützt GFA-BASIC die von Pascal als "Records" und von als C/C++ als 'Structures' bekannten Felder gemischten Datentyps, um zusammengehörige Datensätze zusammenzufassen. - Die TYPE-Strukturen sind nicht so flexibel verwendbar wie bei QBasic. Insbesondere lässt sich ein Strukturelement nicht direkt in eine Datei schreiben. Das ist für Datenbank-Programmierer ein Riesen-Nachteil. So müssen Direktzugriffsdateien grundsätzlich mit dem altmodischen FIELD-Puffer realisiert werden. - Kommentar wird mit Hochkomma ', REM oder mit zwei Schrägstrichen // eingeleitet. Das Hochkomma darf nicht in PRINT-Befehlen verwendet werden. - GFA-BASIC kennt Subroutinen (PROCEDUREs) und Funktionen (FUNCTIONs). Die Prozeduren werden mit PROCEDURE...RETURN definiert und mit GOSOB aufgerufen. Funktionen werden mit FUNCTION...RETURN <Rückgabewert>...ENDFUNCTION definiert und mit FN<Funktionsname> aufgerufen. Subroutinen und Funktionen werden im Gegensatz zu QBasic nicht in eigenen Fenstern bearbeitet, lassen sich aber durch die Tastenkombinationen [Alt + W] und [Alt + Q] in der Bildschirmanzeige auf eine Zeile "zusammenfalten" und wieder auffalten. Standardmäßig gelten sämtliche Variablen global, also sowohl im Hauptprogramm als auch in allen Subroutinen und Funktionen. Bei Bedarf können Variablen in einer Subroutine oder Funktion mit dem LOCAL-Befehl gekapselt, also mit lokalem Geltungsbereich deklariert werden. Der Befehlssatz ------------------------- Der sehr mächtige Befehlssatz umfasst über 500 Befehle (!) und geht weit über das von anderen BASIC-Dialekten gewohnte hinaus. So gibt es z.B. - Bitmanipulations-Befehle - Spezielle Befehle zum Sortieren, Vorbesetzen, Kopieren, Einfügen, Austauschen und Löschen von Feldern - Schiebe- und Rotierbefehle - Befehle für die Matrizenrechnung: Addition, Subtraktion, Multiplikation, Kopieren und Invertierung von Matritzen und Vektoren sind beispielsweise mit nur je einem Befehl möglich - weitere vielfältige mathematische Funktionen wie hyperbolische Winkelfunktionen, Umrechnung Grad <-> Bogenmaß, Kombinatorik-Funktionen und vieles mehr - Mit Hilfe von SSORT und QSORT kann man Textfelder alfabetisch sortieren, sogar mit korrekter Behandlung der Umlaute. - Über 50 Befehle zur Erzeugung eigener grafischer Bedienungsoberflächen - GFA-BASIC verfügt über sehr leistungsfähige Grafik-Befehle - wohl in alter Tradion der ATARI- und Commdore-Computer. Es gibt einen speziellen Befehl CURVE zum Zeichnen krummer Kurven (Bezierkurven). Mit LOADFONT und FREEFONT kann man bequem eigene Schriftarten erzeugen und laden. Die vorhandene Grafikkarte wird automatisch erkannt und VGA-Modi bis zu einer Auflösung von 800 x 600 unterstützt. - Mit DPEEK und DPOKE lassen sich 16-Bit-Worte direkt an beliebigen Speicheradressen lesen und schreiben. Bei den meisten anderen DOS-BASICs ist nur ein byteweises Lesen und Schreiben möglich. Außerdem gibt es LPEEK/LPOKE und PEEK$/POKE$ zum Lesen und Schreiben von Doppelworten und Strings. Erstellung grafischer Bedienungsoberflächen ------------------------------------------- Eine große Stärke von GWA-BASIC liegt in der bequemen Erstellung grafischer Windows-ähnlicher Bedienungsoberflächen mit Mausbedienung, Menüs, Fenstern und Dialogboxen. All diese Dinge sind atemberaubend einfach und oft mit wenigen Befehlszeilen realisierbar. Hinsichtlich der Oberflächen-Programmierung ist GFA- BASIC QuickBASIC weit überlegen und kommt fast an die Mächtigkeit von VisualBASIC für DOS heran. - Die Maus wird direkt durch spezielle Befehle unterstützt. Ein Maustest- programm kann man mit wenigen Befehlen hinschreiben: SCREEN 18 DO LOCATE 4 ,4 PRINT MOUSEX, MOUSEY, MOUSEK // Mauskoordinaten und Maustastenstatus anzeigen LOOP UNTIL MOUSEK = 3 // Abbruch mit rechter+linker Maustaste gleichzeitig Für die Form des Mauszeigers gibt es 8 Varianten, die mit DEFMOUSE wählbar sind. - Eine komfortable Dateiauswahl-Box wird durch den FILESELECT-Befehl unterstützt. Diese Funktion wird bei Q(uick)Basic und PowerBASIC von vielen Anwendern schmerzlich vermisst. Ein einfachen Textdatei-Viewer mit Dateiauswahldialog sieht in GFA-BASIC etwa so aus: FILESELECT "", "", datei$ OPEN datei$ FOR INPUT AS #1 DO LINE INPUT #1, zeile$ PRINT zeile$ LOOP CLOSE #1 - Der ALERT-Befehl gibt eine kleine Nachrichten- und Auswahlbox mit bis zu 5 Klickbuttons auf den Bildschirm aus. Die folgende Programmpassage bietet z.B. dem Anwender bei einer nicht gefundenen Datei die Buttons "Wiederholen" oder "Abbrechen" zum Anklicken mit der Maus an : ALERT 3, "Die Datei existiert nicht", 1, "_Wiederholung |_Abbruch", wahl PRINT wahl //Anzeige "1" wenn Wiederholung, "2" wenn Abbruch geklickt ((Screenshot: siehe AlertBox.gif)) Nach dem Mausklick wird die Nummer des Buttons in der Variablen wahl zurückgeliefert, die Nachrichtenbox gelöscht und der alte Bildschirminhalt wieder hergestellt. - Mausbedienbare Pulldownmenüs sind mit wenigen Befehlszeilen realisierbar. Das folgende Programm erzeugt z.B. ein Pulldown-Menü "Datei" mit den 3 Optionen "Datei", "Oeffnen" und "Beenden". In der Subroutine "auswahl" werden Menüpunkte bearbeitet, die mit der Maus aktiviert sind. SCREEN 18 //VGA-Bildschirm DIM punkt$(5) //Menue-Eintraege definieren punkt$(0)="Datei" punkt$(1)="_Oeffnen" punkt$(2)="_Konvertieren" punkt$(3)="_Beenden" punkt$(4)="" //Ende-Kriterium = 2 Leerstrings punkt$(5)="" MENU punkt$() //Menue anzeigen OPENW #0 //Menue schuetzen ON MENU GOSUB auswahl //Menuebearbeitung ereignisgesteuert anspringen DO ON MENU //Menue in Dauerschleife abfragen LOOP // Subroutine "auswahl" wird bei Auswahl eines Menuepunktes angesprungen //MENU(0) liefert die Nummer auswaehlten Menuepunktes // zurueck PROCEDURE auswahl PRINT MENU(0), punkt$(MENU(0)) //Aktivierten Menuepunkt anzeigen IF MENU(0) = 3 THEN END //Beenden wenn 3.Menuepunkt aktiviert RETURN ((Screenshot: siehe Menux.gif)) - Fenster sind im Textmode mit TBOX bequem anzeigbar, wie das folgende Beispiel zeigt: SCREEN 3 // Textscreen 80*25 Zeichen TCOLOR $17 // Textfarbe Weiss auf Blau TBOX 2,20,4,70,18 // Box mit Doppellinien (2) von (20|4) nach (70|18) // Breite=50, Hoehe=10 TCLIP 21,5 TO 69,17 // Clip-Bereich fuer Printausgabe definieren FOR i=1 TO 39 PRINT "Thomas Antoni - "; NEXT i GFA-BASIC 16 Bit für MS-Windows 3.x =============================================================================== Preise und Lieferformen ------------------------ Alle Preise gemäß der GFA-Preisliste von 07/2002 - GFA-BASIC 16 Bit für Windows 3.0 und 3.1 und 3.11 für Workgroups gibt es in drei Lieferformen: . Der Interpreter kostet 153 EUR . Der Compiler kostet 61,50 EUR . Das Kombipaket mit Interpreter und Compiler kostet 200 EUR Die neueste Version ist V4.38. - Zusätzlich gibt es eine Reihe von Add-Ons, Toolboxen und Büchern, z.B.: . dBase-Interface: 45 EUR . Bücher "GFA-BASIC Powerprogramming I und II": je 11 EUR - Auf der GFA-Webseite steht eine kostenlose Trial-Version des GFA-BASIC 16 Bit Interpreters zur Verfügung, die auf 1000 Quellsprachezeilen beschränkt ist, aber ansonsten den vollen Funktionsumfang bietet. Mit dieser Funktion kann man schon durchaus anspruchsvolle Softwareprojekte realisieren. - Der Interpreter, auch in der Trial-Version, kann EXE-Dateien erstellen, die zum Ablaufen allerdings das Runtime-Modul GFARUN10.DLL benötigen. GFARUN10.DLL muss also zusammen mit dem erstellten EXE-Programm im selben Verzeichnisan an den Anwender übergeben werden. - Der Compiler kann außer EXE-Dateien auch DLLs und andere Libraries und Controls erzeugen. Die mit dem Compiler erzeugten Programme benötigen das Runtime-Modul GFARUN10.DLL nicht. - Von Data Becker gab es übrigens 1992 einmal einenkostengünstigen Interpreter "GFA-BASIC für Windows 16 Bit" in der OEM-Version V4.10 (286er-Version. Die Entwicklungsumgebung ------------------------ Die Installationsdateien für "GFA-BASIC für Windows 16" passen locker auf eine Diskette. Der Installationsvorgang beschränkt sich auf das Entpacken der Dateien; es werden dabei keine Systemdateien oder -Verzeichnisse verändert. Die Bedienungsoberfläche ist im "Config"-Menü zwischen englisch und deutsch umschaltbar. Es ist eine deutsche Online-Hilfe mit einer alfabetischen Befehlsübersicht vorhanden. Die Bedienung entspricht leider nicht immer den Windows-Konventionen. Markierter Text lässt sich z.B. nicht mit der Entf-Taste löschen, sondern über den Menüpunkt "Bearbeiten | Ausschneiden". Im Gegensatz zur DOS-Version verfügt GFA-BASIC für Windows 16 Bit eine Online- Hilfe, die eine Referenz aller Befehle enthält. Mit Shift+F1] erhält man sogar eine kontextsensitive Hilfe zu dem Befehl, in dem der Cursor gerade steht! Die Quellspraceprogramme werden in einem speziellen *.GFW-Format abgespeichert. Über den Menüpunkt "Datei | Text speichern unter..." kann man sein Programm aber auch als reinen ASCII-Text in einer Datei *.LST abspeichern, welche von allen Textverarbeitungen und Editoren gelesen werden kann. *.LST-Dateien kann man über den Menüpunkt "Datei | Hinzuladen..." in der Entwicklungsumgebung einfügen. Noch ein Tipp für das Erstellen von EXE-Dateien: Die Icondatei *.ICO muss grundsätzlich immer denselben Namen haben wir die *.GFW- Quellsprachedatei. Das Icon wird in die EXE-datei "eingebettet". Die Spracheigenschaften ----------------------- "GFA-BASIC für Windows 16 Bit" ist weitgehend kompatibel mit der DOS-Version. Es lassen sich Programme im Windows 3.1 Stil erstellen, die auf alle von Windows angebotenen API-Funktionen zugreifen können. Trotzdem bleibt der gewohnte prozedurale Programmierstil. Aufsteiger von DOS-BASIC- Sprachen brauchen also kaum umzudenken und können den dornenreichen Umstieg auf eine objektorientierte Sprache noch etwas hinausschieben. Obwohl es sich um eine reine 16-Bit-Sprache handelt, lassen sich mit gewissen Tricks Zugriffe auf die 32-Bit-Windows-API-Funktionen realisieren und lange Dateinamen verwenden. Erstellung grafischer Bedienungsoberflächen ------------------------------------------- Grafische Bedienelemente wie Dialogboxen, Buttons, Auswahllisten und Menüs im Windows 3.x-Look können entweder wie bei der DOS-Version "von Hand" ausprogrammiert oder mit dem Fomulardesigner RCS (Resource Construction System) visuell erstellt werden. Dabei sind die Befehle weitgehend kompatibel zur DOS-Version: Der folgende, mit der DOS- Version identische Code zeigt z.B. eine Alert-Box an: SCREEN 18 // VGA-Bildschirm ALERT 3, "Die Datei existiert nicht", 1, "_Wiederholung |_Abbruch", wahl PRINT wahl Und ein Textviewer mit komfortablem Dateiauswahldialog lässt sich in der von GFA-BASIC für DOS gewohnten Weise von Hand so erzeugen: FILESELECT "", "", datei$ OPEN "i", #1, datei$ DO LINE INPUT #1, zeile$ PRINT zeile$ LOOP UNTIL eof CLOSE #1 Die Befehle sind ebenfalls identisch mit der DOS-Version, mit Ausnahme des OPEN- Befehls, der eine etwas andere Syntax hat. Und hier nun ein kleines Programm, das das Arbeiten mit dem Fomulardesigner RSC demonstrieren soll. In einem Dialogfenster wird ein Klickbutton angezeigt. Die 4 Zeilen nach "Dialog #0" sind automatisch von RCS erzeugt und mit "Datei | LST senden" in den Editor eingefügt worden. OPENW #1 //Programmfenster öffnen PRINT "Anzeige und Abfrage eines Buttons. (c) Thomas Antoni" // Fenster mit einem Button definieren: DIALOG #0,350,250,300,100,"Thomas",$10000000 CONTROL "Programm Beenden",100,"button",$10000000,50,20,180,40 ENDDIALOG SHOWDIALOG #0 // Fenster anzeigen DO PEEKEVENT // Ereignisse abfragen IF MENU(1) = 30 THEN // Button betätigt? CLOSEDIALOG #0 // Dialogfenster schließen CLOSEW #1 //Programmfenster schließen END // Programm beenden ENDIF LOOP GFA-BASIC 32 Bit für MS-Windows 95...XP =============================================================================== Preise und Lieferformen ------------------------ - GFA-BASIC 32 Bit für MS - Windows 95...XP . GFA-BASIC 32 auf CD-ROM: 536,50 EUR . GFA-BASIC 32, Upgrade von der 16-Bit-Version: 455,00 EUR . GFA-BASIC 32, Upgrade von anderen Versionen: 485,50 EUR Die Trial-Version 1.01 ist auf der GFA-Webseite leider nicht mehr verfügber. Mit ihr kann man keine EXE-Dateien erstellen.... - Kompilierte EXE-Programme benötigen als Ablaufunterstützung eine kleines Laufzeitmodul (Runtime Library). - Mit der 32-Bit-Version von GFA-BASIC hat sich die Herstellerfirma wohl etwas übernommen. Die Sprache ist ganz anders als die DOS und die 16-Bit- Version und soll wohl VisualBASIC das Wasser reichen. Schon nach kurzer Zeit hat GFA Software Technologies die Weiterentwicklung dieser Programmiersprache leider eingestellt. Aufgrund dessen und wegen des happigen Preises fand die 32-Bit-Version nur wenig Verbreitung. Die Entwicklungsumgebung (Unterschiede zur 16-Bit-Version) ----------------------------------------------------------- - Abkürzungen: Im Gegensatz zum 16 Bit GFA-BASIC gibt es keine Abkürzungen für Befehle (etwa Rep für Repeat). Diese Änderung ist insbesondere erforderlich wegen des möglichen Verzichts auf Gosub und @ vor Prozeduraufrufen und des Wegfalls von Klammern (Rep ist jetzt ein Prozeduraufruf). - String-Funktionen: Das Dollarzeichen kann bei (fast allen) String- Funktionen entfallen, wie bei Chr$(0) oder Chr(0). Im Unterschied zu VB 3/4 ist der Rückgabewert der Funktionen ohne $ kein Variant, es erfolgt aber ggf. eine automatische Konvertierung. - Stringkonstanten: Es gibt die Möglichkeit, durch ein doppeltes "" ein Chr(34) in eine String-Konstante einzufügen. Außerdem gibt es, ähnlich wie in Pascal, die Möglichkeit, mit #Zeichencode (#34#13#10#0) Zeichen in Strings zu verwenden, die sonst über + Chr() + eingefügt werden müßten: so ist "Zeile1" #13#10 "Zeile2" #13#10 gleichbedeutend mit "Zeile1" + Chr(13) + Chr(10) + "Zeile2" + Chr(13, 10). Die Spracheigenschaften --------------------------------------------- "GFA-BASIC für Windows 32 Bit" ist weitgehend kompatibel mit der Version für Windows 16 Bit und auch mit der DOS-Version. Dabei gibt es natürlich Kompromisse, d.h. einige Teile weichen etwas von 16 Bit GFA-BASIC ab. Einige der implementierten Funktionen sind an die 32-Bit-VisualBASIC-Version 4.0 angelehnt. Auch die alten MS-DOS BASICs (GW-BASIC, QBASIC...) sind mit einigen Funktionen vertreten, so dass der Aufstieg von diesen Programmiersprachen zu GFA-BASIC 32- Bi tnicht schwer fällt.. Einige Anleihen wurden von der Programmiersprache 'C' gemacht, so sind Hex- Konstanten mit 0x1234 gleichbedeutend mit $1234 oder &H1234. Mit GFA-BASIC 32 lassen sich Programme im Windows 95 Stil erstellen, die auf alle von Windows angebotenen API-Funktionen zugreifen können. Trotzdem bleibt der gewohnte prozedurale Programmierstil erhalten. GFA-BASIC 32 ist eine reine 32 Bit-Anwendung und besitzt keinen getrennten Interpreter und Compiler. In der Entwicklungsumgebung wird ein Programm stets unmittelbar als Maschinencode ausgeführt. Dadurch ergibt sich eine extrem hohe Ausführungsgeschwindigkeit. GFA-BASIC 32 erzeugt intern direkt Assemblercode (Maschinencode). Deshalb ist ein Inline- Assembler überhaupt erst möglich. Ein wichtiger Vorteil ist die hohe Ausführungsgeschwindigkeit. Die Laufzeitbibliothek ist eine ganz normale Dll (ähnlich msvcrtxx.dll), es ist also kein verkappter Interpreter (Threaded- P- Code-Interpreter) enthalten, sondern es werden nur die von jedem GFA-BASIC 32 Programm gleichermaßen nutzbaren Routinen zusammengefaßt. - Grenzen, Limits (64-KByte Limit): In GFA-BASIC 32 gibt es kaum willkürlich gesetzte Grenzen. So ist die Prozedurgröße nicht auf 64 KByte (oder gar 32 KByte) beschränkt. Die Zeilenlänge ist nicht begrenzt auf 256, 1022, 1023 oder 1024 Zeichen. Die Anzahl der Fortsetzungszeilen ( _ am Zeilenende wie in VB) ist nicht auf neun oder 25 oder 256 oder ... beschränkt. Auch für Stringlängen, Feldgrößen etc. entfällt die 64 Kbyte- Limitierung. - Pointer: GFA-BASIC 32 verfügt über einen leistungsfähigen Pointer- Datentyp.. Die Verfügbarkeit von Pointer-Datentypen ist eine wichtige Erweiterung des Sprachumfangs. Damit lassen sich oft Programmteile besonders kompakt gestalten und einfacher aus C oder Pascal portieren. Die Verwendung von Pointern kann ein Programm meist erheblich beschleunigen (insbesondere Register Pointer To), birgt bei nicht sehr umsichtiger Programmierung aber auch Gefahren [z.B.: Speicherleichen (Memory leaks)]. Der Befehlssatz, Unterschiede zur 16-Bit-Version ------------------------------------------------ - OPEN: Der Open-Befehl wird nur in der langen Form unterstützt, die kurze Form (Open "O", #1, "Test.Dat") wird aber, wenn möglich und vollständig angegeben, vom Editor konvertiert (Open "Test.Dat" for Output As # 1) - GOTO, GOSUB, Zeilennummern, Mehrere Befehle pro Zeile: Im Gegensatz zum 16 Bit GFA-BASIC gibt es die Möglichkeit, mit " : " getrennt, mehrere Befehle pro Zeile zu verwenden. (Erhöhung der Kompatibilität zu VB, GW- BASIC, ...). Zudem sind als Label (Sprungmarken) jetzt auch Zeilennummern erlaubt. (100 GoTo 200). Darüber hinaus können wilde Sprünge benutzt werden (aus For- Next Schleifen heraus usw.), es gibt sogar ein GoSub Label, für Unterprogramme innerhalb von Prozeduren (dann mit Zugriff auf die lokalen Variablen des Aufrufers, ohne eigene Locals). Dies soll insbesondere zur Kompatibilitätserhöhung zu QBASIC usw. dienen. - Die Stringaddition mit &: Das Kaufmanns-Und wird, wie in VB, als Stringadditionsoperator aufgefaßt. "Anzahl" & 7 ==> "Anzahl 7" 12 & 6 ==> " 12 6" Bei 16 Bit GFA-BASIC ist & ein And (ähnlich wie in 'C'), aber mit höherer Priorität (spart Klammern), also 12 & 6 = 4 (%1100 & %0110 = %0100). Diesen Operator gibt es auch noch, aber als %&. Das entsprechende Or gibt es als | und als %|, und das entsprechende Xor jetzt auch als %^. In GFA-BASIC 32 also 12 %& 6 = 4 (%1100 And %0110 = %0100) Hier gibt es auch den Operator $, der wie der VB-Operator & eine Stringverkettung durchführt. 12 $ 6 ==> " 12 6", dieses Zeichen hätte sich für die String-Addition angeboten, aber VBA will es anders. - Der Ähnlichkeitsvergleich: Im Gegensatz zum 16 Bit GFA-BASIC ist der Ausdruck x == y jetzt gleichbedeutend mit x = y. Ähnlichkeitsvergleiche vom 16 Bit GFA-BASIC mit == sind zu ersetzen durch NEAR oder den Vergleich mit Single, also statt If a == 1 einfach If a = 1!. - Funktionen des Win32 API: GFA-BASIC 32 erkennt selbstätig mehr als 1000 API-Funktionen, d.h. diese können direkt wie GFA-Befehle benutzt werden. Dabei sind die Standard-API-Funktionen aus User, Kernel und GDI eingebunden worden. Selten(er) benutzte API-Funktionen wie z.B. die WinSock-Funktionen müssen weiterhin über Declare deklariert werden. Ein Teil der im 32 Bit- Windows nicht vorhandenen Funktionen wird entweder nachgebildet (MoveTo, CreateWindow), emuliert (GetBitmapDimension ...) oder mit einer Fehlermeldung während der Laufzeit abgewiesen (AllocSelector, GetTempDrive, die ProfXxx- Funktionen und die Windows 2.x Sound-Funktionen wie StartSound usw., letztere waren aber schon in Windows 3.0 nicht mehr von Microsoft dokumentiert). Auch die etwa 1400 API-Konstanten der 16 Bit-Version sind implementiert und können direkt genutzt werden. Dazu wurden mehr als 900 Konstanten des Win32-APIs eingebunden. - Grafikbefehle: Die Grafikbefehle (Line usw.) erhalten Koordinaten als Fließkommawerte, nach Skalierung werden entsprechende Integerwerte an das GDI übergeben. Es gibt bei den meisten Graphikbefehlen die Möglichkeit, die Parameter wie in VB zu übergeben: Line (x, y)-(z, t),, BF oder PBox x, y, z, t. Der Color-Befehl arbeitet so wie in VB, also in etwa wie RgbColor im 16 Bit GFA-BASIC. Es gibt auch QBColor, etwa in Color QBColor(i) und auch QBColor i.ch minimal schneller sind. Erstellung grafischer Bedienungsoberflächen ------------------------------------------------ Hier gibt es die größte Neuerung gegenüber den älteren GFA-BASIC-Versionen: Alle Bedienelemente (Menüs, Dialogboxen usw.) sind jetzt als OCX-Controls ausgeführt. Zum Erzeugen von OCX-Controls gibt es den Befehl OCX. Der Befehl OCX erlaubt auch eine "relativ" einfache Konvertierung von GFA-BASIC 16 Bit Dialog-Befehlen. Der Umgang mit den OCXen ist für Einsteiger ziemlich komplex. Das OCX- Objektverzeichnis ist ein PDF-Dokument mit 757 Seiten! GFA-BASIC 32 - Freeware-Version für Windows 95...10 (Stand 23.11.2020) =============================================================================== Bereits 2005 stellte die Firma GFA Software Technologies die Weiterentwicklung und den Support für GFA-BASIC 32 ein. Seitdem ist GFA-BASIC quasi Freeare, und eine Entwicklergemeinde entwickelt die Programmiersprache ständig weiter. Die neueste Version ist V2.57 vom Oktober 2019, die kostenlos unter https://gfabasic32.blogspot.com/p/download.html zum Download bereitsteht. Diese GFA-Version bietet einen Interpreter, einen Compiler und einen Formular- Editor. Die erstellten EXE-Programme benötigen zwingend eine Laufzeitbibliothek in Form der ca. 900 KB großen OCX-Datei "GfaWin23.Ocx". Ein andere Entwicklerteam hat X11-BASIC festiggestellt, eine unabhängigen Neuentwicklung, die sich am GFA-BASIC-Sprachstandard ab Version 3.5 orientiert. X11-BASIC gibt es für Atari, Linux, Android, Paspi, macOS und 32-Bit-Windows. Webseiten zu GFA-BASIC =============================================================================== - www.gfasoft.gfa.net - Die offizielle Webseite von GFA Software Technologies GmbH mit Produktbeschreibungen, Trial-Versionen, Preislisten, Tools, Handbüchern und Kollektionen von Beispielprogrammen. Der HTTP-Server im Downloadbereich funktioniert offensichtlich nicht mehr. Dafür stehen im FTP-Bereich einige Downloads zur Verfügung (FTP-Client zum Durchführen des Downloads verwenden!). Die GFA32-Trial-Version ist leider nicht mehr verfügbar. - www.rowalt.de - ... - www.gfawhelp.gfa.net - Dale Bryants Website "GFA-Help ist eine Riesenseite mit Tonnen von Downloads zu GFA-BASIC für Win 16 und 32 (nicht für DOS!) - Tools für Entwickler, Windows-Hilfedateien für GFA-BASIC, Beispielprogramme - www.ilmiositoweb.it/gfa-basic/ - GFA-BASIC Dokumentation und Befehlsreferenz von Chris Fanucci - www.heise.de/kiosk/archiv/ct/ - Der Kiosk für alte Zeitschriftenartikel der Computerzeitschrift c't mit einigen sehr interessanten Artikeln über GFA-BASIC, die man für ein paar Cent käuflich erwerben kann. Neue Webseiten, Stand Nov. 2020 - www.heise.de/s/Ewle - Download der von den Nutzern weiterentwickelten GFA-BASIC 32 Version - www.heise.de/s/5elw - Übersicht der Versionen von GFA-BASIC für Atari - http://gfabasic.net - Unofficial Home of GFA-BASIC - http://ebook.pixas.de/ - Viele E-Books zu GFA-BASIC für den PC und den Atari-ST vom Autor Uwe Litzkendorf, z.B. "Das große GFA-BASIC-3.0-Buch" von Data Becker - www.heise.de/s/D6ko - Download von X11-BASIC für Atari, Linux, Android (!), Paspi, macOS und 32-Bit-Windows; mit Handbuch und Beispielprogrammen ******************************************************************************** * * Aus dem eBay-Angebot eines GFA-BASIC Interpreters für DOS (25.12.2005) * ============================================================================== * ******************************************************************************** Ich biete hier eine komplette GFA-BASIC MS-DOS (16-Bit) Programmiersoftware an, einschließlich des Interpreters auf dem Upgrade-Stand 4.5, einschließlich des Compilers (zur Herstellung von selbstständig lauffähigen Programmen (.EXE und .COM) ohne Interpreter) und dem DBase-Datenbank-Interface. Alle erforderlichen Original-Systemhandbücher und Original-Disketten mit zahlreichen Beispielroutinen liegen ebenso bei. Alle Inhalte der Original-System-Disketten, sowie Programmier-Beispiele und Hilfstexte und Internetquellen habe ich zusätzlich auf einen modernen CD-Datenträger gebrannt. Als "Beginners All Purpose Instruction Code") hat Programmiersprache BASIC weltweit ihren Platz unter den Entwicklersystemen für Software.GFA-BASIC ist nach meiner Kenntnis seinerzeit eine der außerordentlich innovativse Programmiersprachen gewesen. Das Entstehungskonzept von GFA-BASIC hat seine ganz eigene bemerkenswrete Geschichte in Deutschland. GFA-BASIC hat ganz offensichtlich auch heute noch seinen Anwenderkreis, sowohl in Deutschland, aber wohl auch einen Schwerpunkt-Fangemeinde von Anwendern in den USA, UK´und anderen Ländern. In Erstaunen hat mich versetzt, dass GFA-BASIC jüngst mit einen Eintrag in der freie Internet-Enzyklopädie "WIKIPEDIA" gewürdigt wurde. Offensichtlich gibt es da noch immer einen enthusiastischen Nutzerstamm, der das "easy going" von GFA- BASIC heute immer noch den Software-Dinosauriern vorzieht und als Handwerkszeug verwendet. Wenn Sie Laie sind sollten Sie sich undbeding auf den Internetseiten zum GFA-BASIC vorher informieren (Suchmaschinen benutzen, siehe auch "GFA-BASIC Community"). Es gibt GFA-BASIC für mehrere verschiedene Betriebsystemplattformen: GFA-Basic 32 (GB32) für 32 Bit-WINDOWS (wie z.B. WINDOS-XP) GFA-Basic 16 für Windows 3.x GFA-Basic für DOS (das ist das was Sie hier als komplettes Entwicklerpacket mit allem drum und dran ersteigern könnnen) GFA-BASIC für ATARI ST GFA-BASIC für AMIGA Unter anderem steckte in der Vergangenheit in der Vielfalt der Verwendbarkeit von GFA-BASIC für die verschiedensten Plattformen (z.B bei Wissenschaftler wichtig, vielleicht bei Spezialanalysen für Unternehmen, zu denen es keine Lösung von der Stange gab, wichtig gewesen ...oder, naja ... vielleicht doch nicht???!!!) enorme Vorteile. Ich verwende noch heute fast unverändert eine Vielzahl von schnell aus der Hand und ohne große Umstände geschriebene Berechnungsprozeduren, die ich erst auf dem ATARI ST und später unter MS-DOS mit diesem Entwicklerpaket programmiert habe und die mittlerweile in's 32-Bit- Windowszeitalter hinübergekommen sind (unter GFA-BASIC GB32 natürlich). Keine dicken Handbuch-Schwarten unter denen sich der Schreibtisch durchbiegt und die konkrete Ergebnisse bei komplexen Fragestellungen zur Massendatenverarbeitung als Praktikant schneller als die Softwareabteilung des Hauses mit dem "geht nicht, gibt's nicht" und "hamm' wer nicht im Angebot"-Arbeitskonzept fertig vorlegen. GFA-BASIC-Trumpf ...noch im Jahr 2001! GFA-BASIC ist schnell und ziemlich einfach in einem schlichten, aber ebenso schnellen Interpreter-Editor zu programmieren. Das Schöne ist, man kann's sofort ausprobieren ob's klappt. Wenn's um die reine Funktion und nicht um überbordenden Schnickschnack geht, keine "von der Stange"-Lösung vorhanden ist ...schnell GFA-BASIC Progrämmchen geschrieben. GFA-BASIC arbeitet rasend schnell wenn's um Massendatenverarbeitung von den unendlich großen Festplatte geht. GFA- BASIC erlaubt Addressierung von Systembereichen, die den typischen kontemporären Basic-Dialekten nicht so einfach zugänglich waren. Ich denke, GFA-BASIC unter MS-DOS kann auch heute noch seine Leistung unter Beweis stellen und wird seine Liebhaber bzw. Anwender finden, weltweit! ...zumal ich hier ein komplettes Systementwicklerwerkzeug anbiete (alles drin und dran ...und damals richtig teuer) ...vielleicht gibt's ja jemanden dem noch zum GFA-BASIC-ATARI, AMIGA- System oder Windows-GFA-BASIC das MS-DOS-System zur Umsetzung der eigenen Softwareentwicklungen fehlt. Hier ist es! Komplett! Und nun das Tollste an der ganzen Geschichte: Ich bezeichne mich nicht mal als Programmierer und bin auch sonst in meinen beruflichen Tätigkeiten völlig anders angesiedelt, als man vielleicht glauben mag. Gerade deshalb hat mir GFA-BASIC so manchen beruflichen Knüller erlaubt. ..und warum biete ich dann das so geschätzte GFA-BASIC MS-DOS bei EBAY hier zur weltweiten Versteigerung an? ...man setzt sich ergeizigere Ziele die nun tatsächlich die Leistungsfähigkeit von 16-Bit-Systemen überschreiten. Es geht tatsächlich in meinem Arbeitsfeld um digital darzustellende Genauigkeit, die über die 16-Bit von GFA-MS-DOS hinausgehen (aber für sowas hab' ich GFA-BASIC für 32-Bit Windows) ...die Zeiten ändern sich ..."ich hab' noch einen Koffer in Berlin" wie früher oder heute "ich hab' noch einen Schuber GFA-Basic im Regal von anderen Leuten stehen lassen", das geht im Zeitalter der totalen Mobilität nicht mehr. Deshalb schweren Herzens ...GFA-BASIC MS-DOS Komplettpaket zum richtig Loslegen... mit allem drum und dran (also keineswegs nur die Handbücher) ... wie auf den Fotos ... jetzt hier auf EBAY, weltweit zum mitbieten!. ... schauen Sie sich im Internet unter den einschlägigen Stichworten ein wenig um, und Sie werden feststellen, dass Sie auf einen fundierten Erfahrungsschatz langjähriger Programmierer (Profis und Enthusiasten) und zahlreiche zweckmäßige Programm-Quellcode-Routinen stoßen werden, die sie tatsächlich ziemlich einfach in eigenen Programmen einsetzen können. Was ist an GFA-BASIC so bemerkenswert? Dazu ein anderes Zitat von Roland Walter, einem Entwickler, der sich auf schnelle und effiziente Applikationen, speziell in Bereichen wo andere Entwickler (und Entwicklungswerkzeuge) an Ihre Grenzen stoßen, spezialisiert hat (Zitat). Sie finden folgendes Zitat auch im Internet: "GFA-Basic (ich spreche über die 16-Bit-Version) ist eine wirklich verdammt gute Sprache. Die Programmierumgebung paßt auf eine Diskette, die erzeugten Programme (exe, dll, drv u.s.w.) sind extrem schnell und klein, und es ist alles zugelassen, was unter Windows geht. Ich nehme die 16-Bit-Version heute noch, wenn ich mal eben schnell ein kleines Tool schreiben muß oder eine Routine testen will. - Ein Windows-Programm mit Fenster kann in GFA-Basic nämlich 4 Zeilen lang sein ..... Und vor allem der Editor hat es in sich: Neben den üblichen Features kann man Funktionen im Editor zu einer einzigen Zeile zusammenklappen. Das heißt im Klartext: Das gesamte Projekt kann in einer einzigen Datei bleiben. Was das für die Projekt-Übersichtlichkeit heißt, weiß nur derjenige, der schon mal mit dem GFA-Editor gearbeitet hat."