# XProfan

XProfan ist eine BASIC ähnelnde Programmiersprache, die auf ereignisorientierte Programmierung grafischer Oberflächen ausgelegt ist.

## Geschichte

1990 veröffentlichte Roland G. Hülsmann die erste Version der Programmiersprache unter der Bezeichnung Profan; Aufgrund eines Festplattencrashes war die erste Version nicht mehr verfügbar, deshalb wurde sie neu entwickelt und hieß nun Profan² Mit der Version 8 wurde der Name zu XProfan (extended Profan²) geändert.

### Versionen

Version 8
Erste Version unter dem Namen XProfan. Darin wurden Aspekte der objektorientierten Programmierung in die bis dahin prozedurale Sprache eingeführt. Diese Entwicklung wurde in Version 9 fortgeführt.
Version 11
Neuerungen: dynamisches Speichermanagement, dynamische Arrays, native Unterstützung für Trayicons, Imagelist und Treeviews, Unterstützung zum Speichern von JPEG und PNG, Subclassing und eine OpenGL-Schnittstelle.
Version 12
ist unter dem Namen XProfan X2 erschienen. NEUERUNGEN / ÄNDERUNGEN :
* Firebird-Unterstützung in XProfan integriert,
* Neue Syntax für ODBC-SQL-Zugriffe und BLOBs per ODBC,
* Interne Verwaltung der Variablen,
* Neue Variablensyntax,
* Zwei Neue Variablentypen,
* Übergabe von Strings und Fließkommawerten an APIs und DLL-Funktionen,
* DrawText erweitert + ChooseFont,
* Verbesserung und Erweiterung der vordefinierten Dialoge,
* Zeitpunkte: Datums- und Zeitfunktionen,
* Multiprozessing mit XProfan,
* Filemapping,
* Listbox-Liste und Listenbearbeitung erweitert,
* Menügestaltung nochmals erweitert,
Version 13
ist unter dem Namen XProfan X3 erschienen. NEUERUNGEN / ÄNDERUNGEN :
* MUSIC jetzt mehrstimmig und in Stereo und auf Wunsch auch im Hintergrund
* XProfan kann MIDI
* Assoziative Arrays / Hash-Arrays
* Ressourcen auslesen mit ADDRES
* Ressourcen bearbeiten mit der Containerfunktion RES
* Ressourcen und Versionsinformationen beim Kompilieren ins Programm einbinden
* Move-Funktionen zusammengefasst und ergänzt
* WideStrings und UTF8-codierte Strings
* Erweiterte Datei-Befehle
* Neue und erweiterte Array-Befehle
* Treeview-Erweiterungen
* FOR ... ENDFOR
* STARTPAINT ... ENDPAINT verschachtelt
* Listbox-Liste sortieren
* SMTP-Mailversand mit STARTTLS und SSL/TLS
* Menüs für alle Fenster
Version 14
ist unter dem Namen XProfan X4 erschienen. NEUERUNGEN / ÄNDERUNGEN :
* Inline-Assembler
* JSON
* SQLite
* Datenbank-Export nach XML und JSON
* Containerfunktion COM
* Mailempfang mit SMTP
* Eigene Containerfunktionen
* CallBack-Prozedur für Move
nProfan
eine inoffizielle Erweiterung im Alpha-Stadium. Setzt die Syntax von Profan² in Assembler um und bietet damit seit März 2010 per Präkompilierer ein natives Profan² das kostenlos mit XProfan zusammen eingesetzt werden kann. Damit programmierte Funktionen sind threadsicher, laufen schneller ab als bei interpretierten Quelltext, und sind ebenso für den Einsatz als Callback-Funktionen geeignet.
Profan² SE
ist eine im Funktionsumfang reduzierte Versionen, die für Schulen und Bildungseinrichtungen kostenfrei erhältlich ist. Sie soll im Informatikunterricht oder in Arbeitsgruppen Verwendung finden.

## Eigenschaften

Profan² wurde mit Delphi (bis Version 9.1 in Delphi 2, Version 10 in Delphi 5, ab Version 11 in Turbo Delphi 2006) entwickelt.
XProfan soll anfängerfreundlich sein. Die Sprache orientiert sich an BASIC und Object Pascal. Der Fokus der Entwicklung liegt auf Windows (32/64bit). Daneben gibt es Versionen für Linux und MS-DOS mit eingeschränktem Funktionsumfang.
XProfan kann interpretiert oder kompiliert werden. Die entstehenden Kompilate können mit einer beliebigen Laufzeitumgebung zu einer ausführbaren Win32-Anwendung gelinkt werden. Kompilierte Programme sind deutlich schneller als interpretierte; allerdings werden XProfan-Programme zu einem Zwischencode kompiliert, der zur Laufzeit von der Runtime noch interpretiert werden muss, wodurch kompilierte XProfan-Programme langsamer sind als kompilierte Programme anderer Sprachen wie C oder PowerBASIC, die nativen Maschinencode erzeugen.
Die Windows-API und Programmbibliotheken in Form von DLLs werden unterstützt. An erfahrene Entwickler gerichtet sind Funktionen wie Rückruffunktionen und ein Debugger.

## „Hallo Welt“ in XProfan

oder einfach nur: