Reales Beispiel "ATBinHex"


Als reales Beispiel für eine Übersetzung von Delphi-Quellcode nach C++ wurde die exzellente ATBinHex-Komponente von Alexey Torgashin ausgewählt. ATBinHex ist eine Komponente zum schnellen betrachten von Textdateien mit vielen Anzeigeoptionen. U.a. kann zwischen Text-, Binär- Hexadezimal- und Unicode-Modus umgeschaltet werden.

Mittlerweile scheint keine offizielle Seite zum Download dieser Komponente mehr zu existieren, sie ist aber weiterhin über verschiedene Downloadportale verfügbar. Der Originalcode ist auch in der zip-Datei dieses Übersetzungsbeispiels enthalten.


Das ATBinHex Beispiel herunterladen


Delphi Demoanwendung


Eine vereinfachte Demo-Anwendung wurde erzeugt, die nicht von weiteren Komponenten abhängt, wie das Originaldemo von Alexey Torgashin. Außerdem ist es nicht nötig, die Komponente vor dem Compilieren der Anwendung zu installieren. Der übersetzte C++ Code ist wenig getestet, so dass bei einer Installation Vorsicht angebracht ist.

Das Demo in der Delphiversion befindet sich im Ordner "ATBinHexSource". Es wurde mit der BDS 2006 erstellt. Im Unterverzeichnis Source befindet sich der originale Quellcode von Alexey Torgashin in der Version 2.7.


CBuilder-Version


Der Delphi-Code wurde mittels der VCL des CBuilder 6 übersetzt, aber das Projekt wurde für den CBuilder 2009 erzeugt. Die Verwendung des übersetzten Codes mit dem CBuilder 6 hätte mit zusätzlichen Schwierigkeiten zu kämpfen, weil dort WideStrings und der __int64-Typ nur schlecht unterstützt werden.


Delphi2Cpp-Projekt


Der Project-Ordner entspricht dem gleichnamigen Ordner von Delphi2Cpp. Darin befinden sich die Dateien, die Delphi2Cpp verwendet, um den Quellcode zu übersetzen:

Project/
ATBinHex.prj  Delphi2Cpp Optionen zur Übersetzung des ATBinHex-Codes 
ATBinHex.txt  Liste der Bezeichner, die in ATBinHex.prj eingeschlossen wird 

Stadien der Übersetzung

Verschiedene Stadien der Übersetzung sind in folgenden Ordnern zu finden:

MadeCpp/  das unmodifizierte Resultat der Übersetzung mit Delphi2Cpp 1.5.1 
MadeCompile/  der zum Kompilieren gebrachte C++-Code 
MadeRun/  der zum Laufen gebrachte C++-Code 

C++Builder-Projekt


Das Projekt für den C++Builder 2009 befindet sich in dem Ordner "ATBinHexExe2009".

ATBinHexCpp  Eine Kopie des Ordner "MadeRun" (siehe oben) 
ATBinHexExe.cbproj  C++Builder 2009 Projektdatei 
ATBinHexExeCpp  Datei für "WinMain" 
main.h/.cpp/.frm  Programmoberfläche 

Weiter befinden sich in dem Ordner Kopien der Dateien von ../Delphi2Cpp/Source/CBuilder.

d2c_systypes.h
d2c_system.h
d2c_system.cpp
d2c_sysmath.h
d2c_sysmath.cpp
d2c_sysfile.h
d2c_sysfile.cpp // hier nicht gebraucht


Diese Dateien der Demo Version 1.5.1 von Delphi2Cpp sind ergänzt um die hier benötigten Funktionen: Assert, Inc, SetString, Sqr.



Resultat

Es wäre leicht, durch geeignete Auswahl und Modifikationen von Quellcode perfekte Übersetzungsergebnisse zu erzielen. In diesem Test hingegen war es Ziel eine objektive Einschätzung der Übersetzungsleistung von Delphi2Cpp zu erlangen. Daher wurde versucht den unmodifizierten im Internet erhältlichen Quellcode möglichst gut zu übersetzten.

Diese Übersetzung wurde erstmals im Mai 2010 mit Delphi2Cpp 1.3.0 gemacht. Damals lautete das Resultat: ca. 7500 Zeilen Delphi-Quellcode wurden übersetzt. Im erzeugten C++-Code mussten weniger als 100 Zeilen Code nachbearbeitet werden. Im Januar 2011 mit Delphi2Cpp 1.4.0 war die Anzahl der nötigen Nachbesserungen auf 34 verringert. Aktuell im September 2011 mit Delphi2Cpp 1.5.1 sind 24 Änderungen nötig. 10 Änderungen sind einfache Ersetzungen des Ausdrucks "Classes__0" durch "Classes__1". Diese Differenz ergibt sich aus dem Umstand, dass die C++ Version der VCL des C++Builders nich mit Delphi2Cpp generiert ist. Die Zählweisen ändern sich mit jeder Version des C++Builders.
Um den compilierbaren Code lauffähig zu machen, war schließlich nur eine einzige Korrektur nötig.


Delphi2Cpp Version  Datum  Anzahl Nachbesserungen 
Delphi2Cpp 1.3.0  Mai 2010  < 100 
Delphi2Cpp 1.4.0  Jan 2011  34 
Delphi2Cpp 1.5.1  Sept 2011  24 




   english english

 
Letzte Neuigkeiten
03.09.15
Delphi2Cpp 1.7.0 Neue Übersetzungsoptionen [mehr...]

30.01.12
Delphi2Cpp 1.6.3 Bessere KonstruKtion von Objekten [mehr...]



[aus Fallstudie...]

"Eine Meisterleistung -- Delphi2Cpp hat alle meine Erwartungen weit übertroffen."


Tony Hürlimann
virtual-optima 29.08.2011





"Ich muss mich nochmal für deinen Einsatz und die Qualität deiner Arbeit bedanken, das ist absolut überdurchschnittlich ..."


Gerald Ebner




Diese Homepage ist aus einfachen Texten mit [Minimal Website ]generiert.

Minimal Website
Minimal Website ist mit Hilfe des TextTransformers hergestellt.

TextTransformer
Der TextTransformer ist gemacht mit dem Borland CBuilder

  borland