關於Indy TCPServer的OnExecute中呼叫VB的DLL |
尚未結案
|
longsanglin
初階會員 發表:10 回覆:57 積分:43 註冊:2002-04-23 發送簡訊給我 |
各位好,
小弟有一問題想請教各位大大. 我使用Indy 9.00.14 TCPServer元件, 於OnExecute event中呼叫vb所寫的dll檔, 如下:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var GText, GValue: String;
CObj: Variant;
begin
GText:= AThread.Connection.CurrentReadBuffer;
if GText<>'' then
begin
CObj := CreateOleObject( 'Prj.Class' ); <== VB的dll
CObj.ShowHello; <=VB的Method
:
end;
end; 為何會出現CoInitialize尚未被呼叫? 但我加了CoInitialize(nil); ...CoUninitialize; 時卻又顯示OLE Error ?
請各位大大幫忙解惑, Thanks
|
longsanglin
初階會員 發表:10 回覆:57 積分:43 註冊:2002-04-23 發送簡訊給我 |
|
kunliu
一般會員 發表:1 回覆:4 積分:1 註冊:2002-12-29 發送簡訊給我 |
|
longsanglin
初階會員 發表:10 回覆:57 積分:43 註冊:2002-04-23 發送簡訊給我 |
引言: 請問如何解決????使用xmldocument元件現在也遇到同樣的問題;我改以TLB方法來處理 Ex: vb的dll為InterfaceTEST.DLL => 產生InterfaceTEST_TLB 宣告段: use Windows, Messages, SysUtils, Variants,......, InterfaceTEST_TLB; 程式段: procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread); var GText, GResult: WideString; CObj: _clsInterfaceTEST; begin GText:= AThread.Connection.CurrentReadBuffer; if GText<>'' then begin ... CoInitialize(Nil); CObj:= CoclsInterfaceTEST.Create; try GResult:=CObj.InterfaceTEST(GText); except end; CoUninitialize; AThread.Connection.WriteLn('Call VB DLL Return(' GResult ')'); end; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |