請問一個錯誤訊息 |
缺席
|
BOSS
中階會員 發表:70 回覆:79 積分:64 註冊:2006-11-01 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 我再form1設一全域變數SalAccount:integer型態 在form1.combobox1的onselect事件寫 SalAccount:= ComboBox2.ItemIndex; 在form2的button1click裡寫 salkind:integer型態是button1的區域變數 SalKind := unit1.SalAccount; 在compile時會出現record,object or class type required 錯誤訊息 請問是我哪該修正您如果宣告在Form1的Var底下,也就是紅色部分,在使用上,不需加上Unit Name,即用SalKind := SalAccount; unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; SalAccount: integer implementation {$R *.DFM} end.~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
BOSS
中階會員 發表:70 回覆:79 積分:64 註冊:2006-11-01 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 我form2有uses unit1 至於channel兄所說的 程式會無法辨識salaccount unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; ComboBox1: TComboBox; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; SalAccount: Integer;您是宣告在此嗎?還是宣告在public?如果您是宣告在public則必需要加上Form Name,若是宣告在var底下則不用加Form Name implementation uses Unit2; {$R *.DFM} //將Combox1.ItemIntes給全域變數 procedure TForm1.Button1Click(Sender: TObject); begin SalAccount := ComboBox1.ItemIndex; end; //開啟Form2 procedure TForm1.Button2Click(Sender: TObject); begin Application.CreateForm(TForm2, Form2); try Form2.ShowModal; finally FreeAndNil(Form2); end; end; end. unit Unit2; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation uses Unit1; {$R *.DFM} procedure TForm2.Button1Click(Sender: TObject); var salkind: Integer; begin salkind := SalAccount; ShowMessage(IntToStr(salkind)); end; end.程式執行沒有問題,您可以參考看看與您程式的差異性… ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
BOSS
中階會員 發表:70 回覆:79 積分:64 註冊:2006-11-01 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
變數不是設在public 而是在 implementation之前
form1,form2都是mdichildform form1不需要去create form2所以不用uses form2
這與是否MDI無關, SalAccount宣告在Unit1, 在unit2中未uses unit1則compiler就是不認識,一定要uses的 故form2要寫 SalKind := unit1.SalAccount
這和是否uses無關, 一定要uses的
如果在unit2中另外也宣告了SalAccount或, unit2 uses的其他unit中也有宣告SalAccount則寫成unit1.SalAccount以明確指示來源是必要的,否則可以省 你可能要找一下在unit2中是否有重複宣告了SalAccount
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |