該如何將DDE功能編輯成一個dll? |
尚未結案
|
ithree
一般會員 發表:2 回覆:1 積分:0 註冊:2005-11-02 發送簡訊給我 |
因為教授的命令,所以臨時得學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 發送簡訊給我 |
你功能都寫出來了.要轉成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 發送簡訊給我 |
多謝huwk這位朋友的回答 看完那兩個網頁後
在一些觀念上的確更為清楚了
不過這幾天試了一下 我卡著的地方還是一樣
我原本的DDE程式 都是一個動作一個反應
比如說按下按鈕 然後怎樣怎樣 可是DLL中好像只能編寫入函數(我不知道對不對 但我看到的書都是這樣)
而我正是不會如何能寫出一個函數
然後能夠一樣產生那些反應
而我去借來的書 裡面DLL的範例
大多都是比如showmessage、sum這種簡單的函數
對我而言 實在很難以這些範例去舉一反三
編寫出我目前所需要的函數宣告
希望有過類似經驗的朋友
能給我一些指引 謝謝
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |