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

初級問題:我寫的一個getnewno函數,代碼放在最後,怎樣在本單元和幾個datamodule中調用

答題得分者是:ddy
hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-07 15:57:06 IP:218.20.xxx.xxx 未訂閱
初級問題:我寫的一個getnewno函數,其代碼放在最後,怎樣使其能在本單元和幾個Tdatamodule中調用此getnewno函數? 我把"function getnewno(tbname:string):string;"放在public部分或private部分,但總示如下錯誤提示: [Error] Unit1.pas(33): Unsatisfied forward or external declaration: 'TForm1.getnewno 請各位高手多指教! 多謝! 胡
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-07 16:15:34 IP:210.64.xxx.xxx 未訂閱
你的function 宣告放錯地方了 應該放在implementation之前的var 裡 這樣子才是屬於這個Form 的全域可視範圍 (以 function ABC 為例)
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;
  function ABC():integer ;      implementation
如果是要放在Private /Public 則 在function 實作部份加上TForm. 例:
function TForm1.ABC():integer ;
begin
     ABC := 100;
end;
噓~~~~~~沉思中… 發表人 - ddy 於 2002/11/07 16:17:23
hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-07 19:43:52 IP:218.19.xxx.xxx 未訂閱
又有一個問題,我新建了一個form和一個DATAMODULE,在FORM和DATAMODULE中怎麼訪問不了這個FORM1中的放在public處的函數? 應該怎樣做才能訪問得到?    多謝!
hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-07 19:48:13 IP:218.19.xxx.xxx 未訂閱
引言: 你的function 宣告放錯地方了 應該放在implementation之前的var 裡 這樣子才是屬於這個Form 的全域可視範圍 (以 function ABC 為例)
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;
  function ABC():integer ;      implementation
如果是要放在Private /Public 則 在function 實作部份加上TForm. 例:
function TForm1.ABC():integer ;
begin
     ABC := 100;
end;
噓~~~~~~沉思中… 發表人 - ddy 於 2002/11/07 16:17:23
又有一個問題,我新建了一個form和一個DATAMODULE,在FORM和DATAMODULE中怎麼訪問不了這個FORM1中的放在public處的函數? 應該怎樣做才能訪問得到? 胡
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-08 00:44:46 IP:211.74.xxx.xxx 未訂閱
var
  Form1: TForm1;    implementation
uses unit2,unit3;  //在implementation 之後
{$R *.dfm}
如上例,需於各unit 內uses其它unit 就可以引用其它unit內公開的函數了 噓~~~~~~沉思中… 發表人 - ddy 於 2002/11/08 00:46:03
hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-11-08 08:25:04 IP:218.20.xxx.xxx 未訂閱
引言:
var
  Form1: TForm1;    implementation
uses unit2,unit3;  //在implementation 之後
{$R *.dfm}
如上例,需於各unit 內uses其它unit 就可以引用其它unit內公開的函數了 噓~~~~~~沉思中… 發表人 - ddy 於 2002/11/08 00:46:03
我在form2中編寫的函數,在form1中已“uses Unit2;”,但在form1中還無法訪問那個form2中編寫的函數。 總提示:[Error] Unit1.pas(41): Undeclared identifier: 'doublethevalue' 此doublethevalue為一個form1中的函數,form2要用這個函數。 在種情況下還有沒有其他的要注意的呀! 我急切的希望能訪問些datamodule和form2,form3中的函數。 請教! 多謝! < >< > 胡 發表人 -
FrederickPau
資深會員


發表:4
回覆:161
積分:268
註冊:2002-11-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-11-08 08:38:04 IP:61.228.xxx.xxx 未訂閱
你 Form2 的 Function 寫在那裡呢? 可以把你 Form2 裡的 Function 寫在 Public 裡, Form1 就可以用了
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-11-08 09:21:43 IP:210.64.xxx.xxx 未訂閱
引言: 我在form2中編寫的函數,在form1中已“uses Unit2;”,但在form1中還無法訪問那個form2中編寫的函數。 總提示:[Error] Unit1.pas(41): Undeclared identifier: 'doublethevalue' 此doublethevalue為一個form1中的函數,form2要用這個函數。 在種情況下還有沒有其他的要注意的呀!
先弄清楚,你doublethevalue 是寫在那個Form ?? 你所描述的部份(紅色)有矛盾 如果是doublethevalue 寫在Form1,則Unit2 要引用Unit1 如果要互相引用對方,則要將對方列入uses 中 例:
var  
    Form1: TForm1;
implementation
uses unit2,unit3;  
------------------
var  
    Form2: TForm2;
implementation
uses unit1,unit3;  
------------------
var  
    Form3: TForm3;
implementation
uses unit1,unit2;  
噓~~~~~~沉思中…
hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

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