麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

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

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

盡量使用標準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在线电影 | 视频一区二区中文字幕 | 国内精品久久久久久久影视红豆 | av手机免费在线观看 | 国产成人av在线播放 | 国产精品午夜一区 | 午夜色视频在线观看 | 九九午夜 | 亚洲国产成人一区二区 | 国产亚洲精久久久久久蜜臀 | 亚洲成人免费网站 | 激情在线视频 | 久久久精品视 | 伊人在线 | 禁漫天堂久久久久久久久久 | 久久亚洲线观看视频 | 天天草天天爱 | 成人在线免费看 | 久久精品re | 一级做a爱片性色毛片高清 日本一区二区在线看 | 深夜福利久久久 | 二区视频 | 一级大黄毛片 | 羞羞视频免费网站男男 | 91看片免费版| 激情亚洲一区二区 | 国产成人精品免费视频大全最热 | 成人一级视频 | 一级裸体视频 | 欧美一级特黄特色大片免费 | 亚洲人成中文字幕在线观看 | 久久国产精品一区 | 精品亚洲二区 | 国产在线一级片 | 视频一区二区三区在线播放 | 久久精品一二三区白丝高潮 | 亚洲国产一区二区三区 | 九九热视频免费观看 |