国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Delphi > 正文

對使用Delphi制作DLL復用文件的建議

2019-11-18 18:06:52
字體:
來源:轉載
供稿:網友
對使用Delphi制作DLL復用文件的建議
在公司里有一些需要制作DLL的場合,因為熟悉、方便和簡易,大多數使用Delphi來制作。現在就這個主題提出一些個人建議。

盡量使用標準DLL接口。指的是傳遞的參數類型及函數返回類型不能是Delphi特有的,比如string(AnsiString),以及動態數組和含有這些類型成員的復合類型(如記錄),也不能是包含有這些類型成員數據成員的對象類型,以避免可能的錯誤。如果使用了string類型或動態數組類型,且調用方不是Delphi程序,則基本上會報錯。如果調用方是Delphi但調用方或被調用方沒有在工程文件的第一包含單元不是ShareMem,也可能會出錯。

如果調用方是Delphi應用程序,則可能可以使用不包含禁止類型(string, 動態數組)數據成員的對象作為參數或返回值,但也應盡量避免。

如果調用方與被調用方都是Delphi程序,而且要使用string或動態數組作參數,則雙方工程文件的第一包含單元必須是ShareMem。(C++Builder程序的情況可能與此相同,不過沒有測試過。)

如果調用方不是Delphi程序,則string、動態數組、包含string或動態數組的復合數據類型及類實例,都不能作為參數及返回值。

因此,為了提高DLL的復用范圍,避免可能存在的錯誤,應當使用標準WIN32 API標準參數類型,以前使用string的變量,可以使用PChar(s)轉換。動態數組則轉換為指針類型(@array[0]),并加上數組的長度。

如果因為調用方與被調用方都是Delphi程序,為了編寫方便,不想進行上述轉換,則推薦使用運行時包的形式。運行時包可以保證動態分配數據的正確釋放。這樣因為其擴展名(.bpl),顯出該文件僅限于Delphi/C++Builder使用(不象DLL)。

其次,盡量避免使用overload的函數/過程作輸出,如果同一操作有多個方式,則可以讓函數/過程名有少許差別,類似于Delphi中的FormatXXXX、CreateXXXX等函數及方法,如CreateByDefaultFile, CreateDefault。

最后,作為DLL的提供者,應當提供直接編程的接口文件,如Delphi中的.pas或.dcu(最好是.pas,因為可以有注釋)、C及C++中的.h和.lib。而不是讓使用者們自己創建。如果非要有overload的函數/過程,這一點顯得特別重要。另外,作為Delphi應用,提供的.pas文件可以是提前連接的(使用external指定DLL中的輸出函數),也可以是后期連接的(使用LoadLibrary、GetPRocAddress),DLL提供者提供編程接口文件,既顯得正式(或HiQoS),又有保障。

上一篇:delphi小技巧集錦

下一篇:老友歸來--delphi2005試用手記1

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 桃江县| 阜平县| 洮南市| 江川县| 松溪县| 青阳县| 封丘县| 兴城市| 东乡族自治县| 吉木萨尔县| 石柱| 靖安县| 九龙县| 平利县| 洞口县| 达州市| 华宁县| 河南省| 闽清县| 图片| 丰原市| 思南县| 宁武县| 游戏| 瑞金市| 福泉市| 克拉玛依市| 金堂县| 长丰县| 四川省| 崇左市| 陆河县| 理塘县| 沁阳市| 饶河县| 沽源县| 荔波县| 馆陶县| 柳江县| 辽阳市| 黔江区|