[Blockierte Grafik: http://www.jds-online-shop.de/contents/media…x250%5B1%5D.jpg]
Vorbemerkungen: XProfan ist eine äußerst mächtige Programmier- und Batchsprache für Windows in Einem. Zudem ist XProfan auch noch ein SQL-fähiges Datenbank-Entwicklungssystem mit ODBC-Schnittstelle und direkter dBase-Unterstützung. Auch die Fähigkeiten als MultiMedia-Entwicklungstool können überzeugen. XProfan enthält beides: Interpreter und schnellen Compiler!
Es gibt auch Profan-Versionen für Linux und DOS mit eingeschränktem Befehlsumfang. Auch hier gilt: Ein neues Linken reicht aus, um aus einen Linux- oder DOS-Programm ein Windowsprogramm zu machen. Im Netzwerk könnte ein und dasselbe (!) Kompilat von Windows-, LINUX- oder DOS-Runtimes mit der gleichen Versionsnummer gestartet werden: Ein Programm auf dem Server - beliebige Clients!
Ziele der Entwicklung von XProfan sind:
Eine einfache - an BASIC angelehnte - Syntax auch - aber nicht nur - für den Anfänger
Traditionelle prozedurale und zukunftsweisende objektorientierte Programmierung gleichzeitig
Alle Grafik- und Multimediamöglichlkeiten die Windows bietet
Umfangreiche Datei- und Verwaltungsfunktionen
Das komplette Programm in einer nicht zu großen Datei
Keine weiteren DLLs oder sonstige Dateien
Möglichkeit, Anwendungen ohne weitere Kosten weiterzugeben
Herausgekommen ist bisher "XProfan 12". Eine komplette Programmiersprache. Der Anfänger wird viele BASIC-Befehle in gewohnter Form wiederfinden, u.a. PRINT, LOCATE, CLS, INPUT, IF, WHILE, WEND, SOUND, PRINT #n, INPUT #n, END, LET, ...
Auch die Variablen und Konstanten werden weitestgehend wie in BASIC gehandhabt, wenn auch mit dem Bereichs-Typ ein Datentyp eingeführt wurde, der die Flexibilität von Zeigern bietet, ohne deren Gefährlichkeit in der Anwendung.
Bei den Dateioperationen wurde allerdings das etwas vielseitigere Konzept von PASCAL übernommen:
ASSIGN, RESET, REWRITE, APPEND, RENAME, ERASE, CLOSE, SETFATTR, ...
Mit COPY können Dateien kopiert werden und mit CHDIR, MKDIR und RMDIR können Verzeichnisse verwaltet werden. Spezielle Funktionen geben Auskunft über das aktuelle Laufwerk, den aktuellen Pfad, Attribute, Änderungsdatum und vieles mehr.
Dazu kommen dann noch Windows-spezifische Dinge, wie Menüs, Listboxen, Inputboxen, Load- und Save-Dialoge, ... um nur ein paar Möglichkeiten zu nennen. Zahlreiche vorgefertigte Dialogboxen nehmen dem Programmierer bei Standardaufgaben viel Arbeit ab. Wem das nicht ausreicht, dem wird mit den vielfältigen Möglichkeiten der Oberflächengestaltung gedient, die von mehreren "Helfern" tatkräftig unterstützt werden. Dialoge können völlig frei gestaltet und variiert werden. Alle wesentlichen Dialogelemente stehen zur Verfügung.
Natürlich ist ein Zugriff auf Ressourcen möglich, sodass es z.B. denkbar ist alle Menüs, Dialoge, Texte, Icons und Bitmaps eines Programmes mit einem Tool wie dem "Resource Hacker" in einer DLL oder dem Runtime-Modul unterzubringen
Sehr wichtig sind natürlich auch die umfangreichen Grafikbefehle, die direkt auf den Grafik-Kern von Windows zugreifen: USEBRUSH, USEFONT, USEPEN, USEICON, COPYBMP, RECTANGLE, ROUNDRECT, ELLIPSE, ARC, PIE, DRAWTEXT, ...
Mit LOADBMP und SAVEBMP können Bitmap-Grafiken geladen, verarbeitet und gespeichert werden. Memorybitmaps sorgen für das notwendige Tempo bei Animationen. Das Drucken der Grafiken ist natürlich kein Problem!
Für den Multimedia-Fan bietet XProfan auch einiges: Ansteuerung aller Multimediageräte und Abspielen von WAV-Sounddateien über die Soundkarte. Über die MIDI-Erweiterung der Befehle PLAY und MUSIC komponieren Sie mehrstimmige Songs mit den Sounds Ihrer Soundkarte. Das Abspielen von Musik-CDs ist ebensowenig ein Problem wie das Untermalen von Spielen mit Geräuschen oder das Abspielen von Microsofts Video für Windows: MCISEND, PLAYSOUND, ...
Per FTP-Protokoll ist der Zugriff aufs Internet möglich: Dateien und Verzeichnisse lesen, Dateien schreiben, etc. Der Programmierung von Software, die über das Internet Daten austauscht, steht somit nichts im Wege.
XProfan hat zahlreiche Datenbankfunktionen zum Lesen und Bearbeiten von dBase III- kompatiblen Datenbanken. Kleine und mittlere Datenbankanwendungen sind für XProfan kein Problem. Zusätzlich kommt noch die ODBC-SQL-Schnittstelle hinzu, so dass XProfan auch im Client-Server-Bereich eine immer größere Rolle spielt. SQL ist auch für XProfan keine Fremdsprache.
Die Kontrolle "fremder" Fenster ist ebenso möglich, wie das Senden von Messages und Tastaturcodes. Gerade die zahlreichen Windowsbotschaften eröffnen dem Programmierer umfangreiche Möglichkeiten, auch fremde Anwendungen durch ein XProfan-Programm anzusteuern und zu beeinflussen. Mittels DDE können z.B. Programmanagergruppen angelegt, umbenannt und auch wieder entfernt werden.
Einige Spezialbefehle und eine Option des Linkers ermöglichen die einfache Programmierung von ScreenSavern, die über den Windows-Desktop angesteuert werden können.
Der fortgeschrittene Anwender wird vermutlich zur Bildschirmausgabe die textorientierten Ausgabebefehle des BASIC weniger verwenden, als vielmehr die neuen und mächtigen Windows-Befehle, die volle Kontrolle über die Windows-Grafik bieten und auch TrueType-Schriften voll unterstützen. Text in allen Größen, Farben und Ausrichtungen ist kein Problem.
Wem all dies nicht ausreicht, der kann Funktionen aus Windows-API und DLLs einbinden und so den Funktionsumfang nahezu beliebig erweitern.
Strukturierte und übersichtliche Programmierung wird ermöglicht, indem nur ein Befehl pro Zeile erlaubt ist und zahlreiche Kontrollstrukturen verfügbar sind:
IF ... ELSEIF ... ELSE ... ENDIF, CASE, WHILE ... ENDWHILE, REPEAT ... UNTIL, SELECT ... CASE.
Mit PROC ... ENDPROC können Prozeduren und Funktionen definiert werden und mit DEF können externe Funktionen definiert werden. In Prozeduren und Funktionen gibt es lokale Variablen.
OpenGL wird auch direkt durch zahlreiche Funktionen unterstützt:
oGL("2D"...3D Position wird in Bildschirmkoordinaten gewandelt
oGL("BitmapFont"...Ein Bitmap-Font für OpenGL wird erzeugt
oGL("Blendmode"...Der Überblendmodus wird eingestellt
oGL("Clear"...Löscht den OpenGL-Bildschirm
oGL("Color"...Farbe für die folgenden Zeichenoperationen
oGL("CreateXPGL"...Erzeugt XPGL-Daten
oGL("Cuboid"...Ein Kubus wird gezeichnet
oGL("Cylinder"...Ein Zylinder wird gezeichnet
oGL("DeleteList"...Die Displayliste wird gelöscht
oGL("DeleteTexture"...Löscht die Textur aus dem Grafikspeicher
oGL("Disk"...Eine Scheibe bzw. ein Ring wird gezeichnet
oGL("Done"...OpenGL wird beendet
oGL("Draw"...Zeichnet ein 3D-Sprite
oGL("DrawList" ...Die Displayliste wird ausgeführt
oGL("DrawXPGL"...Zeichnet die aktuellen XPGL-daten
oGL("EndList"...Ende der Darstellungs-Liste
oGL("EndTest"...Der Testmodus wird beendet
oGL("ErrorString"...Fehlerbeschreibung zum OpenGL-Fehler
oGL("Fog"...Der Nebelmodus wird eingestellt
oGL("GetTextureBMP"...Eine Bitmap wird als Textur bereitgestellt.
oGL("Init"...OpenGL-Initialisierung
oGL("LoadTextureBMP"...Eine Bitmapdatei wird als Textur bereitgestellt
oGL("LoadXPGL"...Lädt eine XPGL-Datei
oGL("LoadXPGLData"...Lädt binäre XPGL-Daten
oGL("Locate"...Position der Ausgabe des Bitmap-Fonts
oGL("Move"...Bewegt den Ausgangspunkt
oGL("Origin"...Ursprungskoordinatensystem festlegen
oGL("Outlinefont"...Ein 3D-Font für OpenGL wird erzeugt
oGL("PartialDisk"...Der Teil eines Rings wird gezeichnet
oGL("Pop"...Attribute und Koordinatensystem werden widerhergestellt
oGL("PosMode"...Positionierungsmodus wird festgelegt
oGL("Print"...Textausgabe
oGL("Push"...Attribute und Koordinatensystem werden auf den Stapel gesichert
oGL("Pyramid"...Eine Pyramide wird gezeichnet
oGL("Quad"...Ein Quadrat wird gezeichnet
oGL("Rotate"...Das Koordinatensystem wird gedreht
oGL("SaveXPGLData"...Speichert die XPGL-Daten als binäre Datei
oGL("Scale"...Die folgenden Objekte werden scaliert
oGL("SetName"...Weist einem OpenGL-Objekt eine Kennzeichnung zu
oGL("Show"...Die OpenGL-Szene wird angezeigt
oGL("Sphere"...Eine Kugel wird gezeichnet
oGL("StartList"...Eine Darstellungs-Liste wird erzeugt
oGL("StartTest"...OpenGL wird in den Testmodus geschaltet
oGL("TestMouse"...Entfernung einer 3D-Koordinate zur Mausposition
oGL("TestXY"...Entfernung einer 3D-Position zu einer Bildschirmposition
oGL("Texture"...Einstellung der Textur
oGL("Triangle"...Ein Dreieck wird gezeichnet
oGL("Tube"...Eine Röhre wird gezeichnet
oGL("UseXPGL"...Die XPGL-Daten werden zum Zeichnen vorbereitet
oGL("XPGLCount"...Ermittel die Anzahl der Punkte in den XPGL-Daten
oGL("XPGLObjType"...Ermittelt den Objekttyp der XPGL-Daten
oGL("XPGLType"...Ermittelt die Art der Werte der XPGL-Daten
oGL("<Apifunktion>"...Ruft eine Funktion der OpenGL-API auf
Mit SubProc kann die Container-Funktion OpenGL() um weitere selbstdefinierte Funktionen erweitert werden.
XProfan hat einen Compiler, der einen sehr kompakten Zwischencode erzeugt, der mit einem Runtime-Modul gestartet werden kann. Das letzte Glied in der Kette zur kompletten Programmiersprache ist der im Compiler integrierte Linker, der Runtimemodul und Zwischencode zu einer eigenständigen EXE- Datei oder zu einem ScreenSaver linkt.
Und da das Runtime-Modul keine 700 kB groß ist, sind recht aufwendige Windowsapplikationen unter 1 MB möglich. In den meisten Fällen paßt ein komplettes XProfan-Programm immer noch auf eine Diskette ... sofern man dieses historische Speichermedium noch hat. Da die fertige XProfan-Applikation immer noch als Runtime-Modul für weitere Zwischencode-Dateien dienen kann und sogar eine Übergabe von Parametern (z.B. über die Zwischenablage) möglich ist, steht der modularisierten Programmierung nichts im Wege.
Ach ja: Das berühmte "Hallo Welt"-Programm in XProfan:
Print "Hallo Welt"
WaitKey
End
So einfach ist das. Das "WaitKey" steht nur deshalb da, damit der Anwender Gelegenheit hat, das Ergebnis zu betrachten: Ein Programm in einem Windows- Fenster mit allem was dazugehört. Sozusagen eine vollständige Windows- Applikation. Mit einem Tastendruck oder über die entsprechende Fensterfunktion wird das Programm beendet.
Natürlich beherrscht XProfan das auch in Form eines reinen Windows-Dialoges mit "Ok"-Knopf:
MessageBox("Hallo Welt","als Windows-Dialog",64)
End
Die Kombination von Interpreter und Compiler bietet interessante Vorteile. Im Interpretermodus entwickeln Sie das Programm und testen es aus. Ein zuschaltbarer TRACE-Modus, Debug-Infos und Breakpoints unterstützen Sie dabei. Und wenn es dann fertig getestet ist, verleihen Sie ihm mit dem Compiler den nötigen Drive!
... und eine Batchsprache für Windows benötigen Sie auch nicht mehr, wenn Sie XProfan haben!
Webpage des Herstellers zum Downloaden der verschiedenen Free- und Shareware-Versionen: PROFAN
(Gepostet mit freundlicher Genehmigung des Text- und Programmautors Roland G. Hülsmann)