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

如何連上COM+元件?

尚未結案
bnlonq1022
一般會員


發表:6
回覆:17
積分:4
註冊:2003-07-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-04 17:42:18 IP:140.128.xxx.xxx 未訂閱
因為小弟已寫好COM 元件了,在AP端可連上、ASP也行,但在.NET方面就摸不著頭緒,不曉得要如何連起?還煩請各位大大能幫小弟個忙!謝謝!
OsX
版主


發表:6
回覆:151
積分:111
註冊:2003-05-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-06 17:10:23 IP:60.248.xxx.xxx 未訂閱
在方案總管中, 選擇 Project , 滑鼠右鍵 --> 加入參考 --> 選第2頁 COM.
bnlonq1022
一般會員


發表:6
回覆:17
積分:4
註冊:2003-07-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-06 18:01:27 IP:61.225.xxx.xxx 未訂閱
請問,您指的是哪套開發工具呢?因為小弟是用Delphi2005寫的。
OsX
版主


發表:6
回覆:151
積分:111
註冊:2003-05-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-07 13:07:43 IP:60.248.xxx.xxx 未訂閱
Sorry, 我指的是 VS.NET 2003, 手上沒有 Delphi2005 , 沒辦法 給你建議, 看看其它人是否有用過
bnlonq1022
一般會員


發表:6
回覆:17
積分:4
註冊:2003-07-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-07 18:13:26 IP:61.225.xxx.xxx 未訂閱
原來如此,謝大大的建議!看來還是要等其它大大的幫忙了!
geliswu
一般會員


發表:28
回覆:15
積分:13
註冊:2004-10-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-25 12:30:06 IP:61.70.xxx.xxx 未訂閱
Dear bnlonq1022 對了,你說是用Delphi 2005寫的COM 元件 哪你是用ActiveX Library-->AutomationObject(COM Object) 純Win32方式開發COM 元件還是使用.NET方式開發COM 元件呢 因為你知道Delphi 2005 將Win32部分拆為另一套產品稱做Delphi 2005 for Microsoft Win32 Delphi 2005一樣可以使用.NET方式開發COM 元件。 還有你要連結COM 元件的Client端是使用Win32方式開發的還是.NET,如果是Win32的話做法與以前相同,使用Import ActiveX (使用建立TLB Type Library方式) 將Type Library的.pas檔案引用進來使用即可 如果是.NET方式開發,則操作方式與VS.NET 2003/2003相同,使用Reference方式,.NET的InterOp Service會自動將COM的物件的Type Library編譯成RCW的介面檔並參考進來就可以直接使用 ********************************** Gelis http://home.gigigaga.com/wergelis/ **********************************
bnlonq1022
一般會員


發表:6
回覆:17
積分:4
註冊:2003-07-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-25 19:05:06 IP:218.170.xxx.xxx 未訂閱
COM不是可透過Socket連嗎? 可是在Delphi2005裏,卻找不到(不曉得放哪?) 所以小弟才會問如何連上com 元件的!
geliswu
一般會員


發表:28
回覆:15
積分:13
註冊:2004-10-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-25 23:20:01 IP:61.70.xxx.xxx 未訂閱
對了 因為你是說要在.NET中連結COM 元件 所以以.NET來說直接Reference應該就是你要的答案 雖然COM本身的RPC協定也是Socket的一種 但是就我這從98年開發COM/DCOM的了解,DCOM本身的Library已經實作RPC層,並不允許你去自訂Socket,所以我就是不知道你說的要以Socket去連是說在WinForm的專案或是ASP.NET的專案當中找不到Delphi的DCOMConnection元件??還是?還請您說的更清楚一點 如果是.NET Remoting的話不但可以使用Socket也可以使用HTTP 提供意見給您,希望對你有幫助 ********************************** Gelis http://home.gigigaga.com/wergelis/ **********************************
bnlonq1022
一般會員


發表:6
回覆:17
積分:4
註冊:2003-07-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-27 16:55:21 IP:218.170.xxx.xxx 未訂閱
不好意思,還煩請大大多多指教,因為小弟在.NET方面還是個新手,如果是Win方面的話,在舊版的Delphi,小弟知道如何運用COM 元件,只是在新版的Delphi2005就不熟了,因為主要是小弟想透過Delphi2005寫網頁,而且網頁裏可運用COM 元件做遠端資料庫的存取,只是原本小弟用ASP可以做到,只是換成Delphi2005寫網頁時,就不知該如何寫起了,因為原本的程式碼,透過Delphi2005寫ASP就會過不了!所以還煩請大大幫忙!如果可以的話,可否寫個簡易的範例,讓小弟了解呢?謝謝!
geliswu
一般會員


發表:28
回覆:15
積分:13
註冊:2004-10-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-07-02 23:34:51 IP:61.70.xxx.xxx 未訂閱
Hi    這是我寫的一個使用Delphi 2005寫的ASP.NET程式去呼叫Delphi.NET的技術所開發的COM+元件(ComPackage1)。我Reference之後直接呼叫的 ASP.NET的Page的Source Code如下:    
unit WebForm1;    interface    uses
  System.Collections, System.ComponentModel,
  System.Data, System.Drawing, System.Web, System.Web.SessionState,
  System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls,
  ComPackage1;    type
  TWebForm1 = class(System.Web.UI.Page)
  {$REGION 'Designer Managed Code'}
  strict private
    procedure InitializeComponent;
    procedure Button1_Click1(sender: System.Object; e: System.EventArgs);
  {$ENDREGION}
  strict private
    procedure Page_Load(sender: System.Object; e: System.EventArgs);
  strict protected
    Button1: System.Web.UI.WebControls.Button;
    DataGrid1: System.Web.UI.WebControls.DataGrid;
    Literal1: System.Web.UI.WebControls.Literal;
    procedure OnInit(e: EventArgs); override;
  private
    { Private Declarations }
  public
    { Public Declarations }
  end;    implementation    {$REGION 'Designer Managed Code'}
/// 
/// Required method for Designer support -- do not modify
/// the contents of this method with the code editor.
/// 
procedure TWebForm1.InitializeComponent;
begin
  Include(Self.Button1.Click, Self.Button1_Click1);
  Include(Self.Load, Self.Page_Load);
end;
{$ENDREGION}    procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs);
begin
  // TODO: Put user code to initialize the page here
end;    procedure TWebForm1.OnInit(e: EventArgs);
begin
  //
  // Required for Designer support
  //
  InitializeComponent;
  inherited OnInit(e);
end;    procedure TWebForm1.Button1_Click1(sender: System.Object; e: System.EventArgs);
var co: ComPackage1.TComPackage1;
begin
  co := ComPackage1.TComPackage1.Create;
  try
    try
      Self.DataGrid1.DataSource := co.GetDataSet('categories').Tables['categories'];
    except
      on Ex:Exception do
        Literal1.Text := Ex.Message;
    end;
  finally
      //co.Free;
  end;    end;    end.
bnlonq1022
一般會員


發表:6
回覆:17
積分:4
註冊:2003-07-17

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-07-04 19:40:49 IP:218.170.xxx.xxx 未訂閱
謝geliswu大大的指點 不過,小弟有一個小疑問!就是您在Uses裏所用到的ComPackage1,是您寫的COM 元件是嗎?COM 有辦法直接用Uses就能使用了是嗎?不需先做任何步驟嗎?煩請告之,謝謝!
geliswu
一般會員


發表:28
回覆:15
積分:13
註冊:2004-10-06

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-07-05 23:43:37 IP:61.70.xxx.xxx 未訂閱
這個範例是呼叫一個相同由.NET所開發的COM 元件的範例程式,如果你要呼叫一個VB6或是其他Win32下開發的COM 元件請直接在Reference按下右鍵選擇Add Reference將該COM 元件參考進來就可以使用 這個時候use 的便是該RCW 的Namespace名稱 我的做法也許照成你的混淆,因為我是By專案參考,就像之前Delphi 7/6/5之前 Win32在use XXXXXXX_TLB.pas一樣
geliswu
一般會員


發表:28
回覆:15
積分:13
註冊:2004-10-06

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-07-05 23:53:49 IP:61.70.xxx.xxx 未訂閱
對了 也許這本書會對你有幫助 http://www.books.com.tw/exep/prod/booksfile.php?item=0010302434 2005/7/4 出版 ^__^
bnlonq1022
一般會員


發表:6
回覆:17
積分:4
註冊:2003-07-17

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-07-06 15:04:35 IP:218.170.xxx.xxx 未訂閱
謝geliswu大大熱心的幫忙,小弟會用了,感激不盡,也謝謝您介紹好書,可惜剛去了一趟書局,書局還沒進貨,所以要等一陣子才能買到了!
系統時間:2024-05-06 17:21:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!