Xbase++
Xbase++ | |
---|---|
![]() Xbase++ "Hallo Welt": PROCEDURE Main | |
Basisdaten | |
Paradigmen: | Objektorientierte |
Erscheinungsjahr: | 1997 |
Entwickler: | Alaska Software Inc. |
Aktuelle Version: | 2.0 (30. September 2014) |
Typisierung: | dynamisch |
Beeinflusst von: | Clipper, dBASE |
Betriebssystem: | Windows |
Lizenz: | proprietär |
Alaska Software |
Xbase++ ist eine Programmiersprache für 32- und 64-Bit-Plattformen und wird vom Unternehmen Alaska Software Inc. entwickelt. Sie kann sowohl prozedural als auch objektorientiert benutzt werden, wobei die eindeutigen Stärken in der Objektorientierung liegen.
Funktionsumfang
![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Xbase20WorkBench.png/230px-Xbase20WorkBench.png)
Xbase++ ist mit einem internen Befehlssatz für das Arbeiten mit dBASE- oder FoxPro-Datenbanken ausgerüstet, weshalb zur Arbeit mit DBF-Dateien keine weiteren Treiber (auch kein ODBC) oder DBMS erforderlich sind. Xbase++ bietet eine vollständige Integration aller gängigen Windows-Forms, die innerhalb des Programmcodes als Objekte gekapselt sind. In Xbase++ werden alle objektorientierten Ansätze unterstützt (zum Beispiel Einfach- und Mehrfachvererbung, abstrakte Klassen, abstrakte Methoden). Im Standardsprachumfang beziehungsweise in den mitgelieferten Laufzeitbibliotheken fehlt eine Unterstützung für Standardnetzwerkprotokolle (außer NetBIOS), wie TCP/IP, was aber durch zahlreiche Zusatzprodukte ausgeglichen werden kann. Zudem gibt es eine Vielzahl weiterer Zusatzbibliotheken, mit denen beispielsweise E-Mail-Funktionalität via SMTP- und POP3-Protokoll genutzt werden kann. Des Weiteren kann man die OpenGL-Schnittstelle nutzen oder via ODBC auf beliebige Datenbanken zugreifen. Die Integration von ActiveX-Komponenten ist ebenso möglich wie das Benutzen von .NET-Komponenten. Über einen sogenannten Web Application Adaptor ist es möglich, Geschäftsprozesse via Internet zu unterstützen und direkt über das Internet auf dBASE-Datenbanken zuzugreifen. Das Ergebnis kann dann bequem in jedem beliebigen Browser oder über ActiveX-Komponenten sogar in der eigenen Programmoberfläche dargestellt werden.
Mit Version 2.0 wurde das Web-Frontend um die Compiled-Xbase-Pages-Klasse (<CXP/>) erweitert, mit der die gewohnte Xbase++-Logik, eingebettet in HTML-Code für die Oberfläche, weiterverwendet werden kann. Diese Pages können dann mit jedem beliebigen Browser von einem Webserver abgerufen werden, lediglich die erstellten Programm-DLL müssen auf einem Windows-Server liegen.
Neben den Befehlszeilen-Kommandos stellt Alaska den Lizenznehmern zur Entwicklung bis einschließlich Version 1.9 SL1 das kostenfreie Tool Visual Xbase++ zur Verfügung. Ab Version 2.0 wird die IDE als zentrale Entwicklungsumgebung unter dem Namen Workbench zur Verfügung gestellt.
Versionen
- Xbase++ 1.82, März 2003
- Xbase++ 1.9, Mai 2006
- Xbase++ 1.9 SL1 (build level 1.90.355), April 2009
- Xbase++ 2.0, 30. September 2014, Updates im Rahmen der Continuous Delivery-Strategie am:
- 30. September 2014 (Build 554)
- 13. November 2015 (Build 656)
- 15. Juni 2020 (Build 1255)
- 6. Juli 2021 (Build 1461)
Position im Markt
Xbase++ findet keinen so großen Anklang wie andere Produkte, beispielsweise C++, Visual Basic oder C#. Ein großer Nachteil ergibt sich direkt aus der relativ geringen Durchdringung des Marktes mit Produkten dieser Sprache, was sich zwangsläufig bis zum Entwickler niederschlägt. Dem nämlich steht für seine Arbeit nicht in dem Umfang Informationsmaterial zur Verfügung, wie das bei anderen Sprachen der Fall ist. Funktionen, wie oben beschriebene Zusatzfunktionalitäten, müssen bei anderen Anbietern für oft viel Geld nachgekauft werden, während diese in den weit verbreiteten Sprachen bereits zur Grundausrüstung gehören.
Ein Konkurrenzprojekt zu Xbase++ bietet der Hersteller xHarbour.
Kompatibilität
Xbase++ ist kompatibel zu Clipper, was eine Portierung von Clipper-Programmen in die 32-Bit Windowswelt und in die Browserwelt ermöglicht. Mit Version 2.0 wird seit 2014 ebenfalls eine Migrationsmöglichkeit von Microsoft-Visual-FoxPro-Code angeboten. Dies ist jedoch nur ansatzweise umgesetzt, eine volle Übernahmemöglichkeit wird mit Xbase++ 3.0 angestrebt.
Nachteile
Es ist nicht möglich, komponentenbasiert und sprachübergreifend mit Xbase++ zu arbeiten. So kann man zwar in C++ oder Visual Basic geschriebene DLLs nutzen, umgekehrt jedoch kann man mit Xbase++ keine DLLs erstellen, die sich aus anderen Sprachen heraus nutzen lassen.
Ein weiterer Nachteil besteht darin, dass diese Sprache keinem international anerkannten Standard entspricht, sondern von einer einzelnen Firma spezifiziert und proprietär entwickelt wird (wie z. B. Visual Basic auch; C++ jedoch nicht). Mit Xbase++ ist es weiterhin nicht möglich, plattformübergreifend zu entwickeln, da als Plattform lediglich Windows und Web unterstützt wird.
Syntaxbeispiel
Folgender Xbase++-2.0-Beispielquellcode zeigt eine Klasse, deren Objektinstanzen nur eine Methode haben, mit der sie alle in einem angegebenen Verzeichnis vorhandenen Dateien eines bestimmten Typs sammeln, in einer Klassenvariable speichern und in einer einfachen Messagebox anzeigen.
#include "directry.ch"
// zuerst wird die Klasse definiert CLASS FolderScanner // Methoden und Member-Variablen global sichtbar machen EXPORTED: VAR cFilesString METHOD ListFilesFromFolder
// Sichtbarkeit von Member-Variablen und Methoden auf Subklassen einschränken PROTECTED: VAR cFileExt VAR cDirectory VAR aFiles
METHOD Init METHOD ShowMessage ENDCLASS
// dann werden die Methoden definiert METHOD FolderScanner:Init( cExtension, cDirectory ) // die bergebenen Variablen cExtension und cDirectory werden automatisch als LOCAL definiert LOCAL cErrorTxt := "" // bei der Deklaration können Werte zugewiesen werden
::cFileExt := "" IF VALTYPE( cExtension ) == "C" .AND. .NOT. EMPTY( ALLTRIM( cExtension ) ) ::cFileExt := ALLTRIM( cExtension ) ENDIF
// Kontrollstruktur für Fehler-Management einleiten BEGIN SEQUENCE
IF VALTYPE( cDirectory ) == "C" .AND. .NOT. EMPTY( ALLTRIM( cDirectory ) ) // es darf ohne weiteres Instanzvariablen mit dem gleichen Namen geben ::cDirectory := ALLTRIM( cDirectory ) ELSE break( "Kein Pfad zum Durchsuchen angegeben. Abbruch" ) ENDIF
IF .NOT. FILE( ::cDirectory, "D" ) break( "Das Verzeichnis '"+ ::cDirectory + "' existiert nicht. Abbruch" ) ENDIF
::aFiles := {} ::cFilesString := ""
RECOVER USING cErrorTxt ::ShowMessage("Achtung", cErrorTxt ) // Problem anzeigen QUIT // und Schluss END SEQUENCE // Ende der Kontrollstruktur RETURN self
METHOD FolderScanner:ListFilesFromFolder() ::aFiles := DIRECTORY( ::cDirectory+"\"+"*." + ::cFileExt ) ::cFilesString := "" AEVAL( ::aFiles, { |aFile, i| ::cFilesString += CHR(13)+CHR(10) + aFile[F_NAME]} ) ::ShowMessage("Ergebnis", ; "Zur Datei-Extension " + ::cFileExt + ; " wurden folgende Dateien im Verzeichnis '"+ ; ::cDirectory +"' gefunden : " + ::cFilesString ) RETURN self
METHOD FolderScanner:ShowMessage(cCaption, cMessage) MSGBOX( cMessage, AppName()+": " + cCaption ) RETURN self
// So kann die Klasse verwendet werden PROCEDURE Main() // 'Main' ist der Standard-Bezeichner für die Haupt- bzw. Startroutine LOCAL oFolderscanner oFolderscanner := Folderscanner():New( "EXE", "E:\TEMP" ) oFolderscanner:ListFilesFromFolder() RETURN
Weblinks
- ot4xb (Open Source Tools for Xbase++ ot4xb.dll)
- Deutschsprachige Xbase-Entwickler e. V. (Organ und Interessenvertretung der nutzenden Entwickler gegenüber dem Hersteller)
- DS-Datasoft Hersteller von Xbase++ Tools für Entwickler: XClass++, AdsClass++, AFX++, Visual DBU
- Xbase-Entwickler-Forum (nichtgewerbliche Plattform)
- SQLExpress for Xbase++ Object-Oriented ODBC and SQL interface for Xbase++ | www.sqlexpress.net
- Xb2.NET Xbase++ web server & Internet development tool (TCP/IP, HTTP, SOAP, FTP, SSL, XML) | www.xb2.net
- Alaska Software (Hersteller von Xbase++)
- Xbase++ User Group Osnabrück Lokale Entwicklergemeinschaft (nichtgewerbliche Plattform)
Auf dieser Seite verwendete Medien
Xbase++ 2.0 IDE mit Beispielprojekt FolderScanner