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

declare 一個 function

尚未結案
donlly
一般會員


發表:45
回覆:73
積分:23
註冊:2004-11-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-09 22:46:22 IP:219.131.xxx.xxx 未訂閱
請問在type下是不是隻能declare procedure 而不能declare function? 如果不是的話為什么我在type下declare一個 function function Des:integer; 會有錯誤?
donlly
一般會員


發表:45
回覆:73
積分:23
註冊:2004-11-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-10 08:32:18 IP:61.145.xxx.xxx 未訂閱
unit Unit2;    {$WARN SYMBOL_PLATFORM OFF}    interface    uses   Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,   DBClient, Project1_TLB, StdVcl, Provider, DB, DBTables;    type   TXXZX = class(TRemoteDataModule, IXXZX)     Query1: TQuery;     Database1: TDatabase;     DataSetProvider1: TDataSetProvider;     DataSource1: TDataSource;     private     { Private declarations }      public        function Des:integer; end; implementation .... 代碼如上
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-10 08:33:45 IP:210.65.xxx.xxx 未訂閱
Hi donlly,    type 下也可以 Declare  Function,只是你竟然宣告了該Function,就必須有相對應的程式碼,起碼要有

Function TForm1.Des(Seed : Integer) : Integer;
begin
//
end;
否則會有錯誤訊息的[Error] Unit1.pas(12): Unsatisfied forward or external declaration: 'TForm1.Des' 以下是一個小範例
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;    type
  TForm1 = class(TForm)
    Button1: TButton;
    Function Des(Seed : Integer) : Integer;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    Function TForm1.Des(Seed : Integer) : Integer;
begin
  Randomize;
  Result := Random(Seed   1);
end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(Des(100)))
end;
end.
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
donlly
一般會員


發表:45
回覆:73
積分:23
註冊:2004-11-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-10 08:57:08 IP:218.13.xxx.xxx 未訂閱
謝謝,整個代碼如下:    unit Unit2;    {$WARN SYMBOL_PLATFORM OFF}    interface    uses   Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,   DBClient, Project1_TLB, StdVcl, Provider, DB, DBTables;    type   TXXZX = class(TRemoteDataModule, IXXZX)     Query1: TQuery;     Database1: TDatabase;     DataSetProvider1: TDataSetProvider;     DataSource1: TDataSource;        private     function aa: OleVariant; protected class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override; public end; implementation uses Unit2; {$R *.DFM} class procedure TXXZX.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; function TXXZX.aa: OleVariant; begin result:=1; end; initialization TComponentFactory.Create(ComServer, TXXZX, Class_XXZX, ciMultiInstance, tmApartment); end. 編譯時候的錯誤 [Error] Unit2.pas(24): Declaration of 'aa' differs from declaration in interface 'IXXZX' [Fatal Error] Unit2.pas(28): Program or unit 'Unit2' recursively uses itself 請問是什么原因,謝謝
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-10 10:56:48 IP:210.65.xxx.xxx 未訂閱
Hi donlly,    Do class IXXZX have the same function !?    Do not use unit2 in program unit unit2 for second error.
...
implementation    //uses Unit2; 這行不要    {$R *.DFM}
...
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
donlly
一般會員


發表:45
回覆:73
積分:23
註冊:2004-11-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-10 11:43:09 IP:219.131.xxx.xxx 未訂閱
hi ,fishman     unit Unit2;    {$WARN SYMBOL_PLATFORM OFF}    interface    uses   Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,   DBClient, Project1_TLB, StdVcl, Provider, DB, DBTables;    type   TXXZX = class(TRemoteDataModule, IXXZX)     Query1: TQuery;     Database1: TDatabase;     DataSetProvider1: TDataSetProvider;     DataSource1: TDataSource;         private      function abcd: OleVariant; protected class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override; public end; implementation {$R *.DFM} class procedure TXXZX.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; function TXXZX.abcd: OleVariant; begin result:=1; end; initialization TComponentFactory.Create(ComServer, TXXZX, Class_XXZX, ciMultiInstance, tmApartment); end. 真奇怪,我把function aa 改成 function abcd 就會 [Error] Unit2.pas(24): Undeclared identifier: 'aa' [Hint] Unit2.pas(19): Private symbol 'abcd' declared but never used [Fatal Error] Project1.dpr(7): Could not compile used unit 'Unit2.pas' 但是已經沒有function aa,為什么會這樣?
donlly
一般會員


發表:45
回覆:73
積分:23
註冊:2004-11-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-10 11:47:55 IP:219.131.xxx.xxx 未訂閱
全部程式碼如上,並沒有function aa
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-10 16:15:36 IP:210.65.xxx.xxx 未訂閱
Hi donlly,    在 Compile 錯誤的訊息視窗中,Double Click 該錯誤的地方,就可以跳的出現錯誤的地分了,Check 一下是哪裡錯了!     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
donlly
一般會員


發表:45
回覆:73
積分:23
註冊:2004-11-30

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-10 16:29:40 IP:218.13.xxx.xxx 未訂閱
hi,Fishman 謝謝囬復我的問題,其實我隻想做一個 client呼叫server的function然后返囬一個值到client.你可以給一個最簡單的例子嗎?謝謝
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-12-14 08:40:04 IP:210.65.xxx.xxx 未訂閱
Hi donlly,    請參考 http://delphi.ktop.com.tw/topic.php?topic_id=41695 此外,Delphi 中也有範例程式。位於 C:\Program Files\Borland\Delphi7\Demos\Midas\Login,含Server 端與Client 端程式。 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-05-22 9:44:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!