2011-02-25 62 views
2

我可以獲得一些代碼示例以將DDE用作服務器嗎?我知道如何使用客戶端部分,但無法將我的應用設置爲充當服務器並接收數據。如何使用DDE服務器

回答

2

看看您的Delphi安裝中名爲DDEDemo的文件夾。這是一個Delphi使用的DDE項目(我不是100%確定它仍然包含在內,但看一看)。演示包括一個DDE客戶端和服務器。

編輯 - 對於某些示例代碼,請嘗試使用link

+0

不包括了,至少不能用XE看到 – hikari 2011-02-26 13:44:45

+0

哇..那是D1! (也許也是D2,但不是D3)。你有相當的記憶力。與D2007編譯,不知道他們是否按預期工作。 – 2011-02-26 16:38:09

+0

該演示僅涵蓋客戶端部分。 – hikari 2011-02-26 19:36:05

2

使用DDE服務器非常簡單,您甚至不需要示例代碼。你可以只是在Delphi的窗體設計器內設計時做到這一點:

要創建發出數據的服務器:

  1. 刪除一個TDDEServerConv和 TDDEServerItem表單或數據 模塊。
  2. 服務器項目連接到 服務器會話(使用對象檢查器中設置 DDEServerItem1.ServerConv = DdeServerConv1 ,有 下拉列表中,但雙擊 就足夠了)。
  3. 的DDEServerItem.Text值設置爲一些有效的文本值(即「A」)

接收數據,你可能希望由DDE客戶端傳遞數據給服務器執行的宏。爲此,您使用DdeServerConv.OnExecuteMacro事件。嘗試將參數Msg:TStrings轉儲到這樣的備忘錄:

Memo1.Lines.Assign(Msg); 

現在保存並運行您的項目。

爲了在測試它在Excel類型:

=Project1|DdeServerConv1!DdeServerItem1 

Excel的DDE客戶語法部分是應用程序名,接着豎線,對話名稱,隨後感嘆號,然後項名稱。

你會看到在Excel中出現的值(A,或任何你放入項目中的Text屬性)。

這是一個正常工作的單品DDE服務器,沒有您寫的任何代碼。

我通常會發現,我在運行時創建對話和項目,而不是在設計時,在對我更有用的現實世界場景中。

對於較老的(非Unicode)Delphi版本,還有一個名爲Django的全功能商業產品,它可以幫助DDE工作很多。

我想你也許正在尋找關於如何在delphi端編寫「DDE Poke」命令處理程序的信息。我沒有演示。我試了一下,顯然這些東西並不適合我(服務器上的項目有一個OnPoke事件,我寫了一個簡單的客戶端,名爲PokeData,但它不起作用)。

+0

嗨,不能讓這個工作。我不知道如何在Excel中使用DDE,但我做了一個小客戶端測試應用程序。例如,這適用於mIRC:http://pastebin.com/pqhLuZWN我可以成功地從mIRC中檢索數據,例如暱稱等。我嘗試按照您告訴我的方式將其與服務器測試應用程序一起使用,但它從不顯示任何內容備忘錄。另外,如何在服務器中指定DDE服務名稱? – hikari 2011-02-27 12:11:28

+0

如果您嘗試了它並且無法正常工作,您可能會輸入錯誤的服務器名稱,主題名稱或項目名稱。這是唯一的三種合理的可能性。這不像你想象的那麼難。你看到我上面說了什麼?我的項目的服務器名稱是Project1。會話名稱是DdeServerConv1,而項目是DDeServerItem1。 – 2011-03-10 01:36:46