a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > 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

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

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 国外成人在线视频网站 | 五月婷婷导航 | 午夜看片 | 国产小视频免费观看 | 亚洲一区av| 在线播放国产一区二区三区 | 亚洲八区| 国产一区成人 | 免费黄看片 | 三级黄色网址 | 日日干天天操 | 欧美黑人巨大久久久精品一区 | 黄免费视频 | 黄色国产 | 久久99深爱久久99精品 | 欧美综合色 | 国产精品一区二区福利视频 | 伊人网站| 久久精品国产免费 | 久久久久久久久久久久久久久久久久久久 | 久久久久久艹 | 欧美久久一区二区三区 | 国产高清一二三区 | 一区网站| 久久国产精品免费一区二区三区 | 国产一区二区三区免费 | 天天干,夜夜操 | 国产欧美精品一区aⅴ影院 日韩精品区 | 成人 在线 | 国产看片网站 | 亚洲成人激情在线观看 | 色激情五月 | 一区二区三区四区国产 | 精品九九 | 国产精品久久 | 91精品国产色综合久久不卡蜜臀 | 一片毛片| 男女靠逼的视频 | 亚洲国产成人精品女人久久久 | 亚洲视频在线观看免费 | 91香蕉视频在线观看 |