texttransformer.jpg

18.11.2025

Delphi2CB 2.6.0

1) Vollständig überarbeitete Interface-Unterstützung

Delphi2CB 2.6.0 bietet nun eine präzise Abbildung der Delphi-Interface-Mechanik auf den nativen C++Builder-Standard:

  • Verwendung von __interface und __uuidof für GUID-basierte Interfaces
  • automatische Referenzzählung durch die C++Builder-RTL
  • Integration von QueryInterface, Supports, und as
  • neue Utility-Funktionen für sicheres Casting und Typprüfung

Damit werden Delphi-Interfaces 1:1 in gültige, kompilierbare C++Builder-Interfaces übersetzt.

2) Neues Modul d2c_sysinterface.h

Ein neues internes Modul bündelt alle wichtigen Interface-Hilfsfunktionen und Typen:

DiOut - sicheres Übergabeobjekt für QueryInterface
as_di<T> - typsichere Interface-Konvertierung
FromInterface() - rekonstruiert das zugrunde liegende Objekt
Supports() - prüft dynamisch auf implementierte Interfaces
ObjectIs() - Typprüfung analog zu Delphi is
Diese Funktionen bilden das Rückgrat der neuen Interface-Übersetzung.

3) Verbesserte Übersetzung von Interface-Deklarationen

Delphi2CB erkennt automatisch GUIDs in Delphi-Interfaces und überträgt sie als
INTERFACE_UUID("{...}") in die C++Builder-Syntax.

Beispiel:

Delphi

type
IFoo = interface
['{12345678-1234-1234-1234-1234567890AB}']
procedure DoSomething;
end;


C++Builder

__interface INTERFACE_UUID("{12345678-1234-1234-1234-1234567890AB}") IFoo : public IInterface
{
virtual void __fastcall DoSomething() = 0;
};


Damit entsteht korrekter, idiomatischer C++Builder-Code.

4) Unterstützung für TInterfacedObject und TCppInterfacedObject

Delphi2CB nutzt die nativen Embarcadero-Klassen: TInterfacedObject und TCppInterfacedObject


5) Bessere Fehlermeldungen und Exception-Handling

Neue Hilfsfunktionen liefern aussagekräftige Laufzeitfehler bei fehlerhaften Interface-Casts:

qi_as_throw<T> - wirft EIntfCastError bei ungültigen Casts
from_interface_or_throw()- prüft Objekt-Typkonsistenz
Dadurch ist das Verhalten identisch zu Delphi, inklusive Ausnahmen vom Typ EIntfCastError oder EInvalidCast.





28.10.2024
siehe Delphi2Cpp 2.5.0

26.08.2024

Es gibt nun eine zusätzliche Version der für den C++Builder übersetzten Synedit-Komponenten für den modernen Compiler mit 64 bit. Auch die bisherigen Versionen wurden teilweise aktualisisert.

https://github.com/dm-e/SynEditCb
ansonsten siehe Delphi2Cpp 2.4

19.10.2023
Delphi2CB 2.3
Konvertierung von DFM-Dateien nach C++

- Der Code von DFM-Dateien kann nun optional in C++-Code konvertiert werden, der zur Laufzeit beim Erstellen des Formulars oder eines Frames ausgeführt wird. Im Wesentlichen besteht der DFM-Code aus einer Reihe einfacher Zuweisungen von Werten zu Komponenteneigenschaften. Delphi2Cpp gelingt es auch, andere, teilweise komplexe Serialisierungsaktionen auf intuitive und einfache Weise abzubilden. Hierzu werden spezielle Routinen aufgerufen, die den Eigenschaften die Werte nicht direkt zuweisen, sondern diese als Argumente an die Routinen übergeben, in denen dann weitere Aktionen ausgeführt werden können. Speziell für Komponenten von Drittanbietern kann Delphi2Cpp so konfiguriert werden, dass es solche benutzerdefinierten Funktionen aufruft.
Durch die Übersetzung des DFM Codes lassen sich im C++Builder GUI-Anwendungen bauen, die gänzlich ohne DFM Dateien auskommen.

Mehr Details zur Konvertierung von DFM-Dateien

31.01.2023
Delphi2CB 2.2

Übernahme von Änderungen an Delphi2C# zur erleichterten Übersetzung unvollständigen Codes

  • Rekursive Suche benötitgter Units bei der Übersetzung
  • Optionale Erzeugung von Dummy-Code
  • Ausschluß bestimmer Dateien von der Übersetzung
  • Verwendung einer "Cover"-Datei für unbekannte Typen
  • Bezeichner können durch komplexe Ausdrücke ersetzt werden


02.07.2022
Delphi2CB 2.1
  • Inline-Variablen und -Konstanten von Delphi werden zu lokalen C++-Variablen und -Konstanten
  • Große Bereiche in case-Anweisungen werden jetzt in den default-Abschnitt einer switch-Anweisung verschoben
  • Überprüfung der Loop-Variablentypen, um Endlosschleifen zu verhindern
  • Es gibt eine neue Option zum Normalisieren der Namensbereichsnamen, wie es C++Builder tut
  • Vereinfachte Manipulation der Initialisierungs-/Finalisierungsreihenfolge von Units
  • Für C++Builder gibt es die neue Hilfsfunktion DynamicArrayPointer um dynamische Arrays zu übergeben
  • Initialisierungs, Finalisierungs und Assign-Operatoren in Records werden geparst und ausgegeben, aber nicht automatisch in C++ aufgerufen
  • Der Typ "Comp", der nur aus Gründen der Abwärtskompatibilität existiert, wurde entfernt, um Verwechslungen mit häufig verwendeten Variablen dieses Namens zu vermeiden
  • Der mit Delphi2Cpp nach C++ übersetzt Code steht ist jetzt aktualisiert auf GitHub gehosted
  • Das Video des deutschen Vortrags der CodeRage 2021 wurde jetzt in drei leicht erweiterten Teilen auf Englisch nach YouTube hochgeladen

9.9.2021

Delphi2CB erschienen


   english english

 

 
Letzte Neuigkeiten
18.11.25
Delphi2CB 2.6: Delphi Interfaces [more...]

28.10.24
Delphi2CB 2.5: in Groß- und Kleinschreibung mit Deklarationen übereinstimmende Symbolnamen [more...]



"Hammer, ich hab es tatsächlich hinbekommen bei beiden Projekten."

Christoph Wildensee
auditplan-xp 02.10.2024


 
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