<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Xbase%2B%2B</id>
	<title>Xbase++ - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Xbase%2B%2B"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Xbase%2B%2B&amp;action=history"/>
	<updated>2026-06-04T09:56:24Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Xbase%2B%2B&amp;diff=189800&amp;oldid=prev</id>
		<title>imported&gt;Aka: Tippfehler entfernt, Kleinkram</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Xbase%2B%2B&amp;diff=189800&amp;oldid=prev"/>
		<updated>2025-10-01T15:04:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php?title=Benutzer:Aka/Tippfehler_entfernt&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer:Aka/Tippfehler entfernt (Seite nicht vorhanden)&quot;&gt;Tippfehler entfernt&lt;/a&gt;, Kleinkram&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Programmiersprache&lt;br /&gt;
 | Name = Xbase++&lt;br /&gt;
 | Logo = [[Datei:Xbase20HalloWelt.png|Xbase++]]&lt;br /&gt;
 | Beschreibung = Xbase++ &amp;quot;[[Hallo-Welt-Programm|Hallo Welt]]&amp;quot;:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;PROCEDURE Main&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;msgbox(&amp;quot;Hallo Welt!&amp;quot;, version())&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;RETURN&amp;#039;&amp;#039;&lt;br /&gt;
 | Paradigma = [[Objektorientierte Programmierung|Objektorientierte]]&lt;br /&gt;
und [[Prozedurale Programmierung|Prozedurale Sprache]]&lt;br /&gt;
 | Erscheinungsjahr = 1997&lt;br /&gt;
 | Entwickler = Alaska Software Inc.&lt;br /&gt;
 | AktuelleVersion = 2.0&lt;br /&gt;
 | AktuelleVersionFreigabeDatum = 30. September 2014&lt;br /&gt;
 | Typisierung = [[Dynamische Typisierung|dynamisch]]&lt;br /&gt;
 | Implementierung =&lt;br /&gt;
 | Dialekte =&lt;br /&gt;
 | Beeinflusst_von = [[Clipper (Programmiersprache)|Clipper]], [[dBASE]]&lt;br /&gt;
 | Beeinflusste =&lt;br /&gt;
 | Betriebssystem = [[Microsoft Windows|Windows]]&lt;br /&gt;
 | Lizenz = [[proprietär]]&lt;br /&gt;
 | Website = [http://www.alaska-software.com Alaska Software]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Xbase++&amp;#039;&amp;#039;&amp;#039; ist eine [[Programmiersprache]] für 32- und 64-Bit-Plattformen und wird vom Unternehmen &amp;#039;&amp;#039;Alaska Software Inc.&amp;#039;&amp;#039; entwickelt. Sie kann sowohl [[Prozedurale Programmiersprache|prozedural]] als auch objektorientiert benutzt werden, wobei die eindeutigen Stärken in der [[Objektorientierung]] liegen.&lt;br /&gt;
&lt;br /&gt;
== Funktionsumfang ==&lt;br /&gt;
[[Datei:Xbase20WorkBench.png| miniatur |links| 230px | Xbase++-2.0-Workbench mit Beispielprojekt]]&lt;br /&gt;
Xbase++ ist mit einem internen [[Befehlssatz]] für das Arbeiten mit [[dBASE]]- oder [[FoxPro]]-[[Datenbank]]en ausgerüstet, weshalb zur Arbeit mit DBF-Dateien keine weiteren [[Gerätetreiber|Treiber]] (auch kein [[ODBC]]) oder DBMS erforderlich sind. Xbase++ bietet eine vollständige Integration aller gängigen [[Microsoft Windows|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 &amp;#039;&amp;#039;Web Application Adaptor&amp;#039;&amp;#039; 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 [[Webbrowser|Browser]] oder über ActiveX-Komponenten sogar in der eigenen Programmoberfläche dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Mit Version 2.0 wurde das [[Web-Frontend]] um die &amp;#039;&amp;#039;Compiled-Xbase-Pages&amp;#039;&amp;#039;-Klasse (&amp;#039;&amp;#039;&amp;lt;CXP/&amp;gt;&amp;#039;&amp;#039;) 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-[[Dynamic Link Library|DLL]] müssen auf einem [[Microsoft Internet Information Services|Windows-Server]] liegen.&lt;br /&gt;
&lt;br /&gt;
Neben den Befehlszeilen-Kommandos stellt Alaska den Lizenznehmern zur Entwicklung bis einschließlich Version 1.9 SL1 das kostenfreie Tool &amp;#039;&amp;#039;Visual Xbase++&amp;#039;&amp;#039; zur Verfügung. Ab Version 2.0 wird die IDE als zentrale Entwicklungsumgebung unter dem Namen &amp;#039;&amp;#039;Workbench&amp;#039;&amp;#039; zur Verfügung gestellt.&lt;br /&gt;
&lt;br /&gt;
== Versionen ==&lt;br /&gt;
* Xbase++ 1.82, März 2003&lt;br /&gt;
* Xbase++ 1.9, Mai 2006&lt;br /&gt;
* Xbase++ 1.9 SL1 (build level 1.90.355), April 2009&lt;br /&gt;
* Xbase++ 2.0, 30. September 2014, Updates im Rahmen der Continuous Delivery-Strategie am:&lt;br /&gt;
** 30. September 2014 (Build 554)&lt;br /&gt;
** 13. November 2015 (Build 656)&lt;br /&gt;
** 15. Juni 2020 (Build 1255)&lt;br /&gt;
** 6. Juli 2021 (Build 1461)&lt;br /&gt;
&lt;br /&gt;
== Position im Markt ==&lt;br /&gt;
Xbase++ findet keinen so großen Anklang wie andere Produkte, beispielsweise [[C++]], [[Visual Basic .NET|Visual Basic]] oder [[C-Sharp|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.&lt;br /&gt;
&lt;br /&gt;
Ein Konkurrenzprojekt zu Xbase++ bietet der Hersteller xHarbour.&lt;br /&gt;
&lt;br /&gt;
== Kompatibilität ==&lt;br /&gt;
Xbase++ ist kompatibel zu [[Clipper (Programmiersprache)|Clipper]], was eine [[Portierung (Software)|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|Microsoft-Visual-FoxPro]]-Code angeboten. Dies ist jedoch nur ansatzweise umgesetzt, eine volle Übernahmemöglichkeit wird mit Xbase++ 3.0 angestrebt.&lt;br /&gt;
&lt;br /&gt;
== Nachteile ==&lt;br /&gt;
Es ist nicht möglich, komponentenbasiert und sprachübergreifend mit Xbase++ zu arbeiten. So kann man zwar in C++ oder Visual Basic geschriebene [[Dynamic Link Library|DLL]]s nutzen, umgekehrt jedoch kann man mit Xbase++ keine DLLs erstellen, die sich aus anderen Sprachen heraus nutzen lassen.&lt;br /&gt;
&lt;br /&gt;
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.&amp;amp;nbsp;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.&lt;br /&gt;
&lt;br /&gt;
== Syntaxbeispiel ==&lt;br /&gt;
&lt;br /&gt;
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 &amp;#039;&amp;#039;Messagebox&amp;#039;&amp;#039; anzeigen.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;directry.ch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  // zuerst wird die Klasse definiert&lt;br /&gt;
  CLASS FolderScanner&lt;br /&gt;
     // Methoden und Member-Variablen global sichtbar machen&lt;br /&gt;
     EXPORTED:&lt;br /&gt;
        VAR cFilesString&lt;br /&gt;
        METHOD ListFilesFromFolder&lt;br /&gt;
&lt;br /&gt;
     // Sichtbarkeit von Member-Variablen und Methoden auf Subklassen einschränken&lt;br /&gt;
     PROTECTED:&lt;br /&gt;
        VAR cFileExt&lt;br /&gt;
        VAR cDirectory&lt;br /&gt;
        VAR aFiles&lt;br /&gt;
&lt;br /&gt;
        METHOD Init&lt;br /&gt;
        METHOD ShowMessage&lt;br /&gt;
  ENDCLASS&lt;br /&gt;
&lt;br /&gt;
  // dann werden die Methoden definiert&lt;br /&gt;
  METHOD FolderScanner:Init( cExtension, cDirectory )&lt;br /&gt;
     // die übergebenen Variablen cExtension und cDirectory werden automatisch als LOCAL definiert&lt;br /&gt;
     LOCAL cErrorTxt := &amp;quot;&amp;quot; // bei der Deklaration können Werte zugewiesen werden&lt;br /&gt;
&lt;br /&gt;
     ::cFileExt := &amp;quot;&amp;quot;&lt;br /&gt;
     IF VALTYPE( cExtension ) == &amp;quot;C&amp;quot; .AND. .NOT. EMPTY( ALLTRIM( cExtension ) )&lt;br /&gt;
        ::cFileExt := ALLTRIM( cExtension )&lt;br /&gt;
     ENDIF&lt;br /&gt;
&lt;br /&gt;
     // Kontrollstruktur für Fehler-Management einleiten&lt;br /&gt;
     BEGIN SEQUENCE&lt;br /&gt;
&lt;br /&gt;
     IF VALTYPE( cDirectory ) == &amp;quot;C&amp;quot; .AND. .NOT. EMPTY( ALLTRIM( cDirectory ) )&lt;br /&gt;
        // es darf ohne weiteres Instanzvariablen mit dem gleichen Namen geben&lt;br /&gt;
        ::cDirectory := ALLTRIM( cDirectory )&lt;br /&gt;
     ELSE&lt;br /&gt;
        break( &amp;quot;Kein Pfad zum Durchsuchen angegeben. Abbruch&amp;quot; )&lt;br /&gt;
     ENDIF&lt;br /&gt;
&lt;br /&gt;
     IF .NOT. FILE( ::cDirectory, &amp;quot;D&amp;quot; )&lt;br /&gt;
        break( &amp;quot;Das Verzeichnis &amp;#039;&amp;quot;+ ::cDirectory + &amp;quot;&amp;#039; existiert nicht. Abbruch&amp;quot; )&lt;br /&gt;
     ENDIF&lt;br /&gt;
&lt;br /&gt;
     ::aFiles := {}&lt;br /&gt;
     ::cFilesString := &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
     RECOVER USING cErrorTxt&lt;br /&gt;
        ::ShowMessage(&amp;quot;Achtung&amp;quot;, cErrorTxt ) // Problem anzeigen&lt;br /&gt;
        QUIT // und Schluss&lt;br /&gt;
     END SEQUENCE // Ende der Kontrollstruktur&lt;br /&gt;
  RETURN self&lt;br /&gt;
&lt;br /&gt;
  METHOD FolderScanner:ListFilesFromFolder()&lt;br /&gt;
     ::aFiles := DIRECTORY( ::cDirectory+&amp;quot;\&amp;quot;+&amp;quot;*.&amp;quot; + ::cFileExt )&lt;br /&gt;
     ::cFilesString := &amp;quot;&amp;quot;&lt;br /&gt;
     AEVAL( ::aFiles, { |aFile, i| ::cFilesString += CHR(13)+CHR(10) + aFile[F_NAME]} )&lt;br /&gt;
     ::ShowMessage(&amp;quot;Ergebnis&amp;quot;, ;&lt;br /&gt;
                 &amp;quot;Zur Datei-Extension &amp;quot; + ::cFileExt +    ;&lt;br /&gt;
                 &amp;quot; wurden folgende Dateien im Verzeichnis &amp;#039;&amp;quot;+ ;&lt;br /&gt;
                 ::cDirectory +&amp;quot;&amp;#039; gefunden : &amp;quot; + ::cFilesString )&lt;br /&gt;
  RETURN self&lt;br /&gt;
&lt;br /&gt;
  METHOD FolderScanner:ShowMessage(cCaption, cMessage)&lt;br /&gt;
     MSGBOX( cMessage, AppName()+&amp;quot;: &amp;quot; + cCaption )&lt;br /&gt;
  RETURN self&lt;br /&gt;
&lt;br /&gt;
  // So kann die Klasse verwendet werden&lt;br /&gt;
  PROCEDURE Main() // &amp;#039;Main&amp;#039; ist der Standard-Bezeichner für die Haupt- bzw. Startroutine&lt;br /&gt;
     LOCAL oFolderscanner&lt;br /&gt;
     oFolderscanner := Folderscanner():New( &amp;quot;EXE&amp;quot;, &amp;quot;E:\TEMP&amp;quot; )&lt;br /&gt;
     oFolderscanner:ListFilesFromFolder()&lt;br /&gt;
  RETURN&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.alaska-software.com Alaska Software] (Hersteller von Xbase++)&lt;br /&gt;
* [http://www.xbaseentwickler.de/ Deutschsprachige Xbase-Entwickler e. V.] (Organ und Interessenvertretung der nutzenden Entwickler gegenüber dem Hersteller)&lt;br /&gt;
* [http://www.sqlexpress.net/sqlxpp/index.htm SQLExpress for Xbase++] Object-Oriented ODBC and [[SQL]] interface for Xbase++ | www.sqlexpress.net&lt;br /&gt;
* [http://www.xb2.net/xb2net/index.htm Xb2.NET] Xbase++ web server &amp;amp; Internet development tool (TCP/IP, HTTP, SOAP, FTP, SSL, XML) | www.xb2.net&lt;br /&gt;
* [http://www.xbwin.com ot4xb] (Open Source Tools for Xbase++ &amp;#039;&amp;#039;ot4xb.dll&amp;#039;&amp;#039;)&lt;br /&gt;
* [http://www.xbaseforum.de/ Xbase-Entwickler-Forum] (nichtgewerbliche Plattform)&lt;br /&gt;
* [http://www.ds-datasoft.de DS-Datasoft] Hersteller von Xbase++ Tools für Entwickler: XClass++, AdsClass++, AFX++, Visual DBU&lt;br /&gt;
* [http://xugos.engler-home.de Xbase++ User Group Osnabrück] Lokale Entwicklergemeinschaft (nichtgewerbliche Plattform)&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:Xbase}}&lt;br /&gt;
[[Kategorie:Programmiersprache]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Aka</name></author>
	</entry>
</feed>