delphi.gif (306 バイト) C++ BuilderからDelphiの手続きを呼び出す


Delphiで作ったユニット(フォームも含む)をC++ Builderで呼び出すことによって、Delphiで開発した資産をC++ Builderでの開発に役立てることができます。

C++ Builderでは直接.PASファイルをコンパイルできるので、C++ BuilderプロジェクトにDelphiのソースを含めて開発を行うことができます。

上の図の"DelphiUnit"でForm2のソースがDelphiUnit.pasになっていることに注目してください。DelphiのソースをC++ Builderのプロジェクトに追加するには「プロジェクト/プロジェクトに追加」メニューを実行してDelphiファイルを選択することによって行うことができます。

プロジェクトにDelphiファイルを追加するとC++ソースに自動的に必要なマクロが追加されます(下記)。

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
USERES("TestDelForm.res");
USEFORM("Main.cpp", Form1);
USEFORMNS("DelphiUnit.pas", Delphiunit, Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
 Application->Initialize();
 Application->CreateForm(__classid(TForm1), &Form1);
 Application->CreateForm(__classid(TForm2), &Form2);
 Application->Run();
}
catch (Exception &exception)
{
 Application->ShowException(&exception);
}
 return 0;
}
//---------------------------------------------------------------------------

ただし、#include文は手動で追加する必要があります(下記)。

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Main.h"
#include "DelphiUnit.hpp"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Form2->Show();
}
//---------------------------------------------------------------------------

後は、普通のプロジェクトと同じようにコンパイルすれば、実行ファイルを作成することができます。