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

TRemoteDataModule 可否傳送(回傳)字串資料及檔案??

答題得分者是:jieshu
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-08 19:40:59 IP:61.218.xxx.xxx 未訂閱
請教各位前輩 TRemoteDataModule 可否傳送(回傳)字串資料及檔案?? 用 TRemoteDataModule DataSetProvider SocketConnection 來作 3-tier 資料庫系統 但在程式中也要能傳送字串資料及檔案 請教用TRemoteDataModule 可以作碼? 還是要另外用 IdTCPServer1 IdTCPClient?? 謝謝各位前輩!!
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-08 22:16:02 IP:61.70.xxx.xxx 未訂閱
引言: 請教各位前輩 TRemoteDataModule 可否傳送(回傳)字串資料及檔案?? 用 TRemoteDataModule DataSetProvider SocketConnection 來作 3-tier 資料庫系統 但在程式中也要能傳送字串資料及檔案 請教用TRemoteDataModule 可以作碼? 還是要另外用 IdTCPServer1 IdTCPClient?? 謝謝各位前輩!!
當然可以, 寫個Function來呼叫即可, 不過傳檔案我只會用TBolbField, 新增一個欄位到ClientDataSet, 然後CreateDataSet, 讀入後存檔, 將ClientDataSet.Data傳到Client處理即可.
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-09 08:59:13 IP:61.218.xxx.xxx 未訂閱
引言: 當然可以, 寫個Function來呼叫即可, 不過傳檔案我只會用TBolbField, 新增一個欄位到ClientDataSet, 然後CreateDataSet, 讀入後存檔, 將ClientDataSet.Data傳到Client處理即可.
謝謝前輩的回覆!! --> 寫個Function來呼叫即可 這一部份如何作呢?? 我在 Server有寫一個 Function 但在,Client要如何作呢??
unit JFText1Server_;    {$WARN SYMBOL_PLATFORM OFF}    interface    uses
  Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
  DBClient, ServerApp_TLB, StdVcl, DB, DBTables, Provider, ADODB;    type
  TJFText1Server = class(TRemoteDataModule, IJFText1Server)
    DataSetProvider1: TDataSetProvider;
    DataSetProvider2: TDataSetProvider;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    procedure RemoteDataModuleCreate(Sender: TObject);
    procedure RemoteDataModuleDestroy(Sender: TObject);
    function  aa() :string;
  private
    { Private declarations }
  protected
    class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
  public
    { Public declarations }
  end;    implementation    uses ServerForm_;    {$R *.DFM}    class procedure TJFText1Server.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
  if Register then
  begin
    inherited UpdateRegistry(Register, ClassID, ProgID);
    EnableSocketTransport(ClassID);
    EnableWebTransport(ClassID);
  end else
  begin
    DisableSocketTransport(ClassID);
    DisableWebTransport(ClassID);
    inherited UpdateRegistry(Register, ClassID, ProgID);
  end;
end;    procedure TJFText1Server.RemoteDataModuleCreate(Sender: TObject);
begin
  ServerForm.UpdateClientCount(1);
end;    procedure TJFText1Server.RemoteDataModuleDestroy(Sender: TObject);
begin
  ServerForm.UpdateClientCount(-1);
end;
function  TJFText1Server.aa() :string;
begin
       Result:='abc';
end;
initialization
  TComponentFactory.Create(ComServer, TJFText1Server,
    Class_JFText1Server, ciMultiInstance, tmApartment);
end.
 
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-09 18:40:50 IP:203.204.xxx.xxx 未訂閱
引言: 謝謝前輩的回覆!! --> 寫個Function來呼叫即可 這一部份如何作呢?? 我在 Server有寫一個 Function 但在,Client要如何作呢??
不會寫Function沒關係, 用DataSetProvider的事件來作, 請參考底下這篇 【問題】如何做到使client無法登入server主機? http://delphi.ktop.com.tw/topic.php?topic_id=49212
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-10 17:04:36 IP:219.133.xxx.xxx 未訂閱
先在服务器端的工程里: 1. Delphi的Menu:Vies/Type Library 2. 打开后,可以看到你的这个服务器端的DCOM对象的有关定义。在这里增加一个Method,定义它的Parameter。如果想传档案,可以定义一个BSTR类型的Parameter。然后Save 3. Save后,DELPHI自动在代码里帮你增加了那个Function的声明和实现部分。在实现部分写代码就行了。那个BSTR在这里就是一个WideString 4. 在客户端,直接调用它,比如:DCOMConnection1.YourFunction,就可以调用它了。
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-12 17:45:01 IP:61.218.xxx.xxx 未訂閱
引言: 先在服务器端的工程里: 1. Delphi的Menu:Vies/Type Library 2. 打开后,可以看到你的这个服务器端的DCOM对象的有关定义。在这里增加一个Method,定义它的Parameter。如果想传档案,可以定义一个BSTR类型的Parameter。然后Save 3. Save后,DELPHI自动在代码里帮你增加了那个Function的声明和实现部分。在实现部分写代码就行了。那个BSTR在这里就是一个WideString 4. 在客户端,直接调用它,比如:DCOMConnection1.YourFunction,就可以调用它了。
謝謝前輩回覆!! 但還有問題??請教!! Server端程式如下 procedure TJFText1Server.bbb; begin // ServerForm.UpdateClientCount(-1); end; ------------------------------------- Client端程式 JFText1Server(self.SocketConnection1.GetServer).bbb; 但執行那一行時,會產生錯誤?? 謝謝前輩!!
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-07-12 18:09:24 IP:61.218.xxx.xxx 未訂閱
原來是這樣: self.SocketConnection1.AppServer.bbb ; 但就沒有語法輔助了......
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-07-12 18:18:42 IP:203.204.xxx.xxx 未訂閱
引言: Client端程式 JFText1Server(self.SocketConnection1.GetServer).bbb; 但執行那一行時,會產生錯誤?? 謝謝前輩!!
有可能SocketConnection1沒有設好, 而抓不到Server, 在強制轉型下, 會出現記憶體的錯誤!!
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-07-12 18:50:32 IP:61.218.xxx.xxx 未訂閱
原來是這樣: self.SocketConnection1.AppServer.bbb; 謝謝前輩!!
系統時間:2024-05-08 4:19:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!