- zu konvertierender Pascal Quellcode (Testunit.pas):
unit TestUnit; interface type MyEnum = (meOne, meTwo, meThree); function DoSomething(Value : MyEnum) : string; var I : Integer; Buffer : array [0..255] of Char; implementation function DoSomething(Value : MyEnum) : string; begin case Value of meOne : Result := 'One'; meTwo : Result := 'Two'; meThree : Result := 'Three'; end; end; end.
- der passende Header (*.hpp) kann wie oben beschrieben, oder auch auf der Kommandozeile per Hand generiert werden: dcc32 -jphn TestUnit.pas
- DCC32.EXE ist der Pascal compiler, der Schalter „-jphn“ teilt dem Pascalcompiler mit, eine *.hpp und eine *.obj für den BC++Builder zu generieren
- die fertig generierte Testunit.hpp:
#ifndef TestUnitHPP #define TestUnitHPP #pragma delphiheader begin #pragma option push -w- #pragma option push -Vx #include <SysInit.hpp> // Pascal unit #include <System.hpp> // Pascal unit namespace Testunit { #pragma option push -b- enum MyEnum { meOne, meTwo, meThree }; #pragma option pop extern PACKAGE int I; extern PACKAGE char Buffer[256]; extern PACKAGE AnsiString __fastcall DoSomething(MyEnum Value); } /* namespace Testunit */ #if !defined(NO_IMPLICIT_NAMESPACE_USE) using namespace Testunit; #endif #pragma option pop // -w- #pragma option pop // -Vx #pragma delphiheader end. #endif // TestUnit
- befreit vom Ballast sieht die Testunit.hpp nun so aus:
enum MyEnum { meOne, meTwo, meThree }; int I; char Buffer[256]; AnsiString __fastcall DoSomething(MyEnum Value);
- die Deklarationen wurden jetzt generiert, der Delphi-Code in der *.pas muss jetzt noch „per Hand“ selber umgesetzt werden 🙂