全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1465
推到 Plurk!
推到 Facebook!

該如何將DDE功能編輯成一個dll?

尚未結案
ithree
一般會員


發表:2
回覆:1
積分:0
註冊:2005-11-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-17 21:30:18 IP:218.167.xxx.xxx 未訂閱
因為教授的命令,所以臨時得學delphi 可是正因為如此,半路出家之下, 寫起程式來實在很笨拙,希望能有人給我點意見。 我之前靠著一些電腦書籍, 好不容易才寫出了一個簡單的能跟word合作的DDE程式, 大致上是上面有一個EDIT,兩個按鈕, 按下第一個按鈕後,能讀取word內的文字到EDIT上, 如果在這個時候修改EDIT上的文字,再按下第二個按鈕, 就能改變原本word內的資料。 如今我想將這樣的DDE功能寫成一個dll檔, 並寫出一個程式能呼叫這個dll檔以使用DDE功能, 我找到的書籍中,在dll檔的示範範例, dll檔內被編寫成外部使用的幾乎都是用function去宣告, 可是我的DDE程式,其中的DDE功能都是procedure 可能這就是基礎不夠吧,我實在不知道該怎麼去把那些功能轉進dll檔, 請問該怎麼樣做會比較好? 以下是我原本寫的DDE --------------------- unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DdeMan; type TForm1 = class(TForm) DdeClientConv1: TDdeClientConv; DdeClientItem1: TDdeClientItem; Edit1: TEdit; Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin if (not DdeClientConv1.SetLink('WinWord','C:\example.DOC')) then ShowMessage('Set Link Error'); DdeClientItem1.DdeItem:='DDE_LINK'; if (not DdeClientConv1.OpenLink) then ShowMessage('Open Link Error'); end; procedure TForm1.Button1Click(Sender: TObject); var szTheData : PChar; begin szTheData :=DdeClientConv1.RequestData(DdeClientItem1.DdeItem); Application.ProcessMessages; if (szTheData <> NIL) then Edit1.Text :=StrPas(szTheData); StrDispose(szTheData); end; procedure TForm1.Button2Click(Sender: TObject); var szTheData : PChar; begin if(Edit1.Text='')then exit; szTheData :=StrAlloc(256); DdeClientConv1.PokeData(DdeClientItem1.DdeItem,StrPCopy(szTheData, Edit1.Text)); StrDispose(szTheData); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin DdeClientConv1.CloseLink; end; end.
huwk
資深會員


發表:26
回覆:340
積分:323
註冊:2002-04-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-17 22:45:26 IP:211.76.xxx.xxx 未訂閱
你功能都寫出來了.要轉成DLL並不是難事! 建議 1.將你的每個功能獨立出單一FUNCTION 例如將你的FormCreate那一小段獨成能 function OpenWord(sFilename:String):Boolean; 2.當成功回傳TRUE,失敗回傳FALSE! 最好也再加上錯誤補捉try Except! 3.將每個功能封入你的DLL中 給你二個有關於DLL的教學 http://big5.pconline.com.cn/b5/www.pconline.com.cn/pcedu/empolder/gj/delphi/0506/645500.html http://big5.pconline.com.cn/b5/www.pconline.com.cn/pcedu/empolder/gj/delphi/0506/646746.html 你可以試試看。有問題的話再貼上來囉!
------
熊的學習 http://huwk.blogspot.com
ithree
一般會員


發表:2
回覆:1
積分:0
註冊:2005-11-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-24 00:49:56 IP:218.167.xxx.xxx 未訂閱
多謝huwk這位朋友的回答 看完那兩個網頁後 在一些觀念上的確更為清楚了 不過這幾天試了一下 我卡著的地方還是一樣 我原本的DDE程式 都是一個動作一個反應 比如說按下按鈕 然後怎樣怎樣 可是DLL中好像只能編寫入函數(我不知道對不對 但我看到的書都是這樣) 而我正是不會如何能寫出一個函數 然後能夠一樣產生那些反應 而我去借來的書 裡面DLL的範例 大多都是比如showmessage、sum這種簡單的函數 對我而言 實在很難以這些範例去舉一反三 編寫出我目前所需要的函數宣告 希望有過類似經驗的朋友 能給我一些指引 謝謝
系統時間:2024-05-17 9:57:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!