Einzelnen Beitrag anzeigen

DMW

Registriert seit: 6. Sep 2006
Ort: Münster
269 Beiträge
 
Delphi XE Professional
 
#4

Re: Converter c++ to delphi

  Alt 9. Mär 2008, 18:47
Es gibt keine Programme, die Delphi- in C++-Code oder umgekehrt konvertieren. Aufgrund der sehr unterschiedlichen Sprachfeatures wäre die Implementation eines solchen Tools nahezu unmöglich. Es gibt aber einige Vorstufen zu einem solchen Konverter:
  • Es existieren Tools, die C-Headerdateien (nicht C++!), also nicht C-Programmcode, sondern lediglich das Interface, in Delphi-Units zu konvertieren versuchen. HEADCONV wäre eines, CodeGear hat vermutlich im internen Gebrauch ebenfalls eines. Zumindest HEADCONV ist nicht sehr ausgereift.
  • Der Delphi-Compiler ist in der Lage, das Interface eines Delphi-Units in einer .hpp-Datei für C++Builder zu speichern. Diese Lösung ist, da bereits seit 1997 existent, zu hoher Reife gelangt, bedient sich aber C++Builder-spezifischer Schlüsselwörter (der C++Builder-Compiler wurde zugunsten der Delphi-Kompatibilität wurde um die Schlüsselwörter _fastcall, __classid, __closure, __property und __published, für eine bessere COM-Unterstützung um __automated, __dispid und __uuidof erweitert). Das bedeutet, daß der Code nur mit C++Builder übersetzbar ist und nicht z.B. mit Visual C++ oder dem GCC.
  • Quelltext in einer .NET-Sprache kann meines Wissens recht reibungslos in eine andere übersetzt werden. Benutzt man aber sprachspezifische Spezialisierungen, z.B. die Kompatibilität zum herkömmlichen Delphi in Delphi .NET, LINQ in C# oder die C++/CLI-Spracherweiterungen, so geht auch dies nicht mehr.


In deinem Fall ist es vielleicht ratsam, o.g. Delphi-Komponente zu benutzen. Grundsätzlich aber ist für den Fall, daß du C-, C++- und Delphi-Code in einer Anwendung benötigst, der C++Builder (z.B. in Form des kostenfreien Turbo C++, das du mittels TEMerger mit Turbo Delphi integrieren kannst) die erste Wahl, denn in einem C++Builder-Projekt kannst du C++- und Delphi-Units gemeinsam verwenden. Der Aufruf von C++-Code in Delphi ist aber auch hier nicht ohne Umwege möglich - entweder bastelst du also eine kleine Wrapperfunktion mit C-Interface, die den C++-Code aufruft, oder du schreibst den Teil des Projektes, der die C++-Funktionen benutzt, in C++.
Moritz
  Mit Zitat antworten Zitat