程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 在C++Builder中使用Delphi文件

在C++Builder中使用Delphi文件

編輯:關於C++

在使用多種語言和工具編寫一個應用程序時,最為困難的事情之一是創建和維護定義文件的接口。幸運的是,C++Builder把這一切都替你做好了。當在項目中加入一個.PAS文件時,C++Builder會自動創建一個.HPP文件。

在CPP文件中,可以調用Pascal的函數、對象等。這為Delphi的程序員移植全部或部分的項目提供了便捷的途徑。

下面是在C++Builder中使用Delphi代碼的原則:

1、在C++Builder的窗體編輯器中,不能修改或編輯Delphi的窗體。但是可以修改Delphi窗體的PAS文件和子節點。可以用Bin目錄下的Convert程序將Delphi的窗體轉換成文本格式 ,然後以文本方式編輯Delphi窗體,然後再轉換回DFM文件格式。關鍵是要記住:可以在 IDE中編輯Delphi的PAS文件,但是不能編輯Delphi的窗體文件(DFM文件)。

2、在同一文件中,C++和Object Pascal不能同時定位。Object Pascal 可以被C++調用, 反之亦然。但是在C++中,調用Pascal要比從Pascal中調用C++要容易些。

3、C++Builder的項目中不能鏈接DCU文件,但是可以直接使用源碼。另一種方法是:先 生成一個可以被C++Builder鏈接的OBJ文件(如果是使用Delphi3.x)。這個方法適應於 窗體、組件和單元。

C++Builder並不關心項目中的單元是用C++還是用DELPHI編寫。C++ Builder都將當作C++Builder統一進行編譯。

一般來講,任何在Delphi3.x中用delphi編譯器可以編譯的單元

都可以在C++Builder中編譯。C++Builder可以編譯下列內容:

1、Delphi窗體;

2、包含對象的Delphi單元;

3、包含過程、函數、常量、數組等的Delphi單元;

4、Delphi組件。

在C++Builder項目中,添加Delphi單元的步驟如下:

1、選擇Projet|Add to Project

2、從Add to Project對話框中選擇CPP、C、PAS、RES、LIB或OBJ。對於Delphi單元,選擇PAS。

3、浏覽目錄並選擇加入項目所需要的文件。

4、找到所需的文件後,單擊Open完成。無須以任何方式進一步處理Pascal文件。

在C++Builder中使用Delphi組件

在C++Builder中使用Delphi組件是容易的。大部分組件不需修改就可以直接使用,但是有時在安裝組件選項板時出現的編譯錯誤也會導致Delphi的組件出現問題。

在C++Builder中試圖使用Delphi組件時可能會遇到一些問題,如鏈接錯誤等。

C++Builder中有三種文件擴展名用於組件,即OBJ、CPP、PAS文件,而對於每一種擴展名文件,C++Builder都有不同的處理方法。

1、使用.OBJ文件安裝組件時,編譯器把目標文件鏈接到程序包庫。

2、如果是.CPP文件,則先調用C++編譯器產生一個.OBJ文件,然後再鏈接到組件庫。

3、如果是.PAS文件,則先調用Pascal編譯器,這個編譯器

是一個小型編譯器。它不同於Delphi中的Pascal編譯器。它不僅創建一個Delphi Compiled Units(DCU)文件,而且還產生一個.OBJ文件和一個以.HPP為擴展名的C++頭文件(在使用Pascal文件時,可以強制產生C++的頭文件、OBJ和DCU文件。命令行狀態下使用.JPHN作為DCC32.exe的可選參數)。然後.OBJ文件鏈接到組件庫,而頭文件用於應用程序的類的說明。

盡管創建了一個C++的頭文件,有時還是可能會出現問題。一些pascal語言的特性不能轉換成

C++,因而在下列三個方面可能產生問題。

1、給組件庫安裝組件時;

2、在C++Builder生成C++頭文件時;

3、使用Delphi組件後鏈接C++Builder應用程序時。

在C++Builder中可以使用Object Pascal的代碼,這是一個驚人之舉。整個VCL都是用Object Pascal編寫的,它可以和C++Builder代碼進行鏈接。但是要記住,不是百分之百可以鏈接,這是由於C++和Object Pascal之間極少的不兼容造成的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved