倪華娟
[摘要]隨著信息化技術(shù)的飛速發(fā)展,紙箱業(yè)和其他制造業(yè)信息化一樣,經(jīng)歷了從單機(jī)運(yùn)行至內(nèi)部局域網(wǎng)最終致互聯(lián)網(wǎng)網(wǎng)上運(yùn)行的發(fā)展歷程,同行之間的競爭變成了企業(yè)信息管理的競爭。本文通過對比當(dāng)前流行的設(shè)計(jì)軟件開發(fā)平臺的研究,發(fā)現(xiàn)Delphi是一款簡單、易于掌握,并且功能強(qiáng)大、實(shí)用的系統(tǒng)開發(fā)軟件。認(rèn)為Delphi的動(dòng)態(tài)鏈接庫是一種特殊的可執(zhí)行文件,它的內(nèi)存機(jī)制可以減少系統(tǒng)資源占用,而且便于系統(tǒng)升級。由于DLL具有節(jié)省內(nèi)存、共享代碼、升級方便和獨(dú)立于編程語言的優(yōu)點(diǎn),現(xiàn)已被廣泛應(yīng)用。另外,Delphi利用DLL實(shí)現(xiàn)了窗體的重用機(jī)制,用戶可以將自己設(shè)計(jì)好的窗體儲存在一個(gè)DLL中,在需要的時(shí)候可隨時(shí)調(diào)用它。
經(jīng)過對紙箱軟件的分析研究,本課題使用了Delphi的動(dòng)態(tài)鏈接庫技術(shù),結(jié)合SQL SERVER數(shù)據(jù)庫開發(fā)建立了一個(gè)繪制紙箱設(shè)計(jì)圖的DLL庫模塊。
[關(guān)鍵詞]紙箱設(shè)計(jì);動(dòng)態(tài)鏈接庫;DLL;Delphi
一、研究現(xiàn)狀
隨著國內(nèi)包裝業(yè)的迅猛發(fā)展,原來靠裝備精良、實(shí)力雄厚占得先機(jī)的紙箱企業(yè),現(xiàn)在敏銳地發(fā)現(xiàn)在設(shè)備、技術(shù)方面大家已在同一條起跑線上,同行之間的競爭變成了企業(yè)內(nèi)部管理的競爭。所謂“工欲善其事,必先利其器”,運(yùn)用ERP系統(tǒng)來管理企業(yè)內(nèi)部事務(wù),近兩年這一趨勢更呈加速。在紙箱生產(chǎn)行業(yè)中,ERP應(yīng)用的復(fù)雜性主要是客戶對紙箱產(chǎn)品的要求千變?nèi)f化,客戶需求的品種規(guī)格也很多,眾所周知,紙箱企業(yè)客戶所需的產(chǎn)品幾乎沒有相同的,箱型、=型、紙質(zhì)、?。üに嚨燃?xì)節(jié)都有特定的要求,這就要求廠家快速制作樣品模型。
二、課題主要研究內(nèi)容
本課題是基于紙箱ERP管理系統(tǒng),由于紙箱管理系統(tǒng)本身多變的特點(diǎn),很少有紙箱ERP管理系統(tǒng)集成了紙箱圖紙的自動(dòng)生成功能,目前紙箱行業(yè)對ERP管理系統(tǒng)要求越來越迫切,為了更好、更方便快捷的服務(wù)紙箱業(yè)客戶,本次課題主要研究的是如何利用DELPHI開發(fā)軟件自動(dòng)生成紙箱圖紙,為了使程序能更方便的修改,也為了這些代碼能更好的共享,我們使用了動(dòng)態(tài)鏈接庫技術(shù)(DLL)自動(dòng)生成紙箱圖紙。如果能通過動(dòng)態(tài)鏈接庫技術(shù)(DLL)自動(dòng)生成圖紙,我們只需要簡單的根據(jù)紙箱邊長各尺寸,輸入相應(yīng)的數(shù)據(jù)就能自動(dòng)生成紙箱圖形(.bmp)。這樣我們就可以通過程序簡單的調(diào)用.DLL文件實(shí)現(xiàn)生成圖紙的功能,而不用每次都寫一長串的代碼,修改也變得更加方便。
三、本課題采取的研究方法和技術(shù)途徑
(一)Dll的制作一般分為以下幾步:
l、在一個(gè)DLL工程里寫一個(gè)過程或f數(shù)。2、寫一個(gè)Expo~s關(guān)鍵字,在其下寫過程的名稱。不用寫參數(shù)和調(diào)用后]。
(二)參數(shù)傳遞
l、參數(shù)類型最好與window C++的參數(shù)類型一致。不要用DELPHI的數(shù)據(jù)類型。2、最好有D回值[即使是一個(gè)過程],來報(bào)出調(diào)用成功或失敗,或狀態(tài)。成功或失敗的D回值最好為1[成功]或0[失敗].一句話,與windows c++兼容。3、用stdcall聲明后]。4、最好大小寫敏感。5、無須用far調(diào)用后],那只是為了與windows 16位程序兼容。
(三)全局變量的使用
在widnows 32位程序中,兩個(gè)應(yīng)用程序的地址空間是相互沒有聯(lián)系的。雖然DLL在內(nèi)存中是一份,但變量是在各進(jìn)程的地址空間中,因此你不能借助dll的全局變量來達(dá)到兩個(gè)應(yīng)用程序間的數(shù)據(jù)傳遞,除非你用內(nèi)存映像文件。
(四)調(diào)用靜態(tài)載入
l、客戶端f數(shù)聲名:
1)大小寫敏感。2)與DLL中的聲明一樣。3)調(diào)用時(shí)傳過去的參數(shù)類型最好也與windows c++一樣。4)調(diào)用時(shí)DLL必須在windows搜索路徑中,順序是:當(dāng)前目錄;Path路徑;windows;widows\system;windows\ssystem32;
(五)調(diào)用動(dòng)態(tài)載入
建立一種過程類型(或者是一個(gè)Function)[如果你對過程類型的變量只是一個(gè)指針的本質(zhì)清楚的話,你就知道是怎么回事了1。如:
四、總結(jié)
本課題使紙箱管理軟件集成了自動(dòng)生成紙箱圖紙的功能(.bmp),原來很多企業(yè)是手動(dòng)畫圖的,現(xiàn)在我們只要簡單的輸入紙箱圖的型號及各邊長就能自動(dòng)生成BMP圖紙,大大提高了紙箱廠的工作效率,而且使用了DLL動(dòng)態(tài)鏈接庫技術(shù)使文件調(diào)用更加簡單,增加的程序的安全性,使以后程序升級更加簡單。
本課題先通過創(chuàng)建一個(gè)DLL工程文件,生成一個(gè).DLL文件,把生成的.DLL文件復(fù)制到一個(gè)一般的工程文件夾下,通過一個(gè)=口程序輸入相應(yīng)紙箱圖的各個(gè)邊長,然后調(diào)用DLL文件,把相應(yīng)的邊長的參數(shù)讀取進(jìn)來,再根據(jù)這些邊長自動(dòng)生成一個(gè)BMP的圖片。總的來說,本課題的成果是一種用DELPHI數(shù)據(jù)鏈接庫方法研究的一種生成BMP紙箱圖紙的算法。endprint