Xbase++

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel oder Abschnitt bedarf einer Überarbeitung: Ausdruck, Rechtschreibung (jede Menge fehlerhafte Komposita, ..) Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung.
Xbase++
Xbase++
Xbase++ "Hallo Welt":

procedure main()
msgbox("Hallo Welt!",;
"Xbase++ 1.90.355")
return

Basisdaten
Paradigmen: Objektorientierte

und Prozedurale Sprache

Erscheinungsjahr: 1997
Entwickler: Alaska Software Inc.
Aktuelle Version: 1.90 SL1  (21. April 2009)
Typisierung: dynamisch
Beeinflusst von: Clipper, dBase
Betriebssystem: Windows
Lizenz: proprietär
Alaska Software

Xbase++ ist eine Programmiersprache für 32-Bit und 64-Bit Plattformen der Alaska Software Inc. Sie kann sowohl prozedural als auch objektorientiert benutzt werden, wobei die eindeutigen Stärken in der Objektorientierung liegen.

Funktionsumfang[Bearbeiten]

Visual Xbase++ mit Beispielprojekt

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 (Einfach- und Mehrfachvererbung, Abstrakte Klassen, abstrakte Methoden, …). Im Standardsprachumfang bzw. 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 so genannten Web Application Adaptor ist es sogar möglich Geschäftsprozesse via Internet zu tätigen und direkt über das Internet auf dBASE-Datenbanken zuzugreifen. Das Ergebnis kann dann bequem in jedem beliebigen Browser dargestellt werden oder über ActiveX-Komponenten sogar in der eigenen Programmoberfläche.

Neben den Befehlszeilen-Kommandos stellt Alaska den Lizenznehmern zur Entwicklung das kostenfreie Tool Visual Xbase++ zur Verfügung.

Versionen[Bearbeiten]

  • 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 Arctica, anlässlich der 4. europäischen Xbase++ Developer Conference im April 2012 wurde den Teilnehmern ein Conference Build bereitgestellt. Die Auslieferung der RC1-Version sollte zum 4. Quartal 2012 erfolgen.[1]

Position im Markt[Bearbeiten]

Xbase++ findet keinen so großen Anklang wie andere Produkte, wie 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 den „großen“ Sprachen der Fall ist und viele Dinge, 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. Bis vor einigen Jahren gab es für Xbase++ noch keine offiziell vom Hersteller der Sprache (Alaska Software) vertriebene IDE. Seit einiger Zeit wird aber die IDE Visual Xbase angeboten, die mittlerweile in der Version 2.0 (Stand 24. September 2004) zu haben ist.

Ein Konkurrenzprojekt zu Xbase++ bietet der Hersteller xHarbour.

Xbase++ ist kompatibel zu Clipper, was eine Portierung von Clipper-Programmen in die 32-Bit Windowswelt und in die Browserwelt ermöglicht.

Nachteil von Xbase++[Bearbeiten]

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[Bearbeiten]

Folgender 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 "xbtsys.ch"
#include "directry.ch"

  // zuerst wird die Klasse definiert
  CLASS FolderScanner
     EXPORTED:
        VAR aFiles
        VAR cFileMask
        VAR aFileMask
        VAR cDirectory
  
        METHOD Init
        METHOD ListFilesFromFolder
  ENDCLASS
  
  // dann werden die Methoden definiert
  METHOD FolderScanner:Init( cMask, cDirectory )
     // die übergebenen Variablen cMask und cDirectory werden automatisch als LOCAL definiert
     IF VALTYPE( cMask ) == "C" .AND. ! EMPTY( ALLTRIM( cMask ) )
        ::cFileMask := ALLTRIM( cMask )
     ELSE
        ::cFileMask := ""
     ENDIF
  
     IF VALTYPE( cDirectory ) == "C" .AND. ! EMPTY( ALLTRIM( cDirectory ) )
        // es darf aber ohne weiteres Instanzvariablen mit dem gleichen Namen geben
        ::cDirectory := ALLTRIM( cDirectory )     
     ELSE
        MSGBOX( "Kein Pfad zum Durchsuchen angegeben. Programmabbruch", "Achtung" )
        QUIT
     ENDIF
     ::aFiles := {}
     ::aFileMask := {}
  RETURN self
  
  METHOD FolderScanner:ListFilesFromFolder()
     LOCAL aX, i   // eine strenge Typisierung ist nicht notwendig
     LOCAL cMessageString := ""   // bei der Deklaration können Werte zugewiesen werden
     
     IF ! DIRCHANGE( ::cDirectory ) == NO_DISK_ERR  
        //Konstanten wie NO_DISK_ERR können in Include-Dateien definiert werden, ähnlich den *.h-Dateien in C
        MSGBOX( "Das angegebene Verzeichnis existiert nicht. Programmabbruch", "Achtung" )
        QUIT
     ELSE
        aX := DIRECTORY( "*." + ::cFileMask )
     ENDIF
     
     FOR i:= 1 TO LEN(aX)
        IF UPPER(RIGHT( aX[ i, F_NAME], LEN( ::cFileMask ) )) == ::cFileMask
           AADD( ::aFileMask, ::cDirectory + "\" + aX[ i, F_NAME ] )
           cMessageString += aX[ i, F_NAME ] + CHR(13) + CHR(10)
        ENDIF
     NEXT
     
     MSGBOX( "Zur Dateimaske " + ::cFileMask + ;
        " wurden folgende Dateien im angegebenen Verzeichnis gefunden : " + ;
        cMessageString, "Ergebnis" )
     
  RETURN self
     
  // So kann die Klasse verwendet werden
  PROCEDURE Main()
     LOCAL oFolderscanner
     oFolderscanner := Folderscanner():New( "EXE", "C:\TEMP" )
     oFolderscanner:ListFilesFromFolder()
  RETURN

Einzelnachweise[Bearbeiten]

  1. Aussage des Alaska Software Inc. CEO Steffen Pirsig am 20. April 2012 auf der 4. europäischen Xbase++ Developers Conference in Isernhagen.

Weblinks[Bearbeiten]