Unit間,間接USE的問題 |
答題得分者是:cobraliu
|
douglas
初階會員 發表:24 回覆:42 積分:38 註冊:2008-03-05 發送簡訊給我 |
以下大致描述程式的架構:
//Unit1部分 (省略定義區) var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.Add(Str2); //取得Form2的資料 end; //Unit2部分 (省略定義區) var Form2: TForm2; Str2 : String; implementation uses Unit3; {$R *.dfm} procedure TForm2.FormCreate(Sender: TObject); begin Str2 := Str3; //用單部執行的方式檢查, Str3有值, 但是Str2沒有 end; //Unit3部分 (省略定義區) var Form3: TForm3; Str3 : String; implementation {$R *.dfm} procedure TForm3.FormCreate(Sender: TObject); begin Str3 := 'This Message From Unit3'; end; 在Unit2的Create Form的動作無法讓Str2取得Str3的值 必須使用其他程序或函式進行運作才能完成取值 請問各位學長們, 我的觀念哪邊有違規阿?? ----- 真是不好意思 = =" 目前正在自學中 這是擷取編輯畫面中的部分程式碼下來 我有嘗試過把 uses Unit* 這部分放到最上面的那個uses, 還是沒用 ( 我看書上面用的是再定義區段裡面用 const 宣告 ?? 一整個撒無) 還是說我還需要具備哪部分的觀念之後才適合摸索這部分 編輯記錄
douglas 重新編輯於 2008-03-20 10:21:21, 註解 無‧
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
cobraliu
中階會員 發表:15 回覆:75 積分:83 註冊:2007-11-22 發送簡訊給我 |
你的問題應該是在Unit Create的順序
隨然看不出你做這樣的用途 依我知道的,你試試 如果你是Form1,Form2,Form3循序的產生那相對的你的Unit應該是Unit1,Unit2,Unit3的產生 而你現在是Form1引用Form2的變數,而Form2引用Form3的變數 但Form的產生方式是Form1>Form2>Form3,跟你目前的Form3(資料)>Form2(給予某一變數)>Form1(取Form2的變數) 雖然以變數引用上看似沒有問題,但邏輯上怪怪的... 如果是我解讀你的文章是這樣,那你可以試著去改變Form的產生順序Project改或Delphi畫面「Project」>「Options」>「Forms頁面」->「Auto-create forms」那一個選項去改順序調為「Form1,Form3,Form2」 以下是Project ---------------------------------------------------------- Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm3, Form3); Application.CreateForm(TForm2, Form2); -----------------------------------------------------------
------
初學、初學、學了很久...還是在初學階段..Orz
編輯記錄
cobraliu 重新編輯於 2008-03-20 21:55:35, 註解 無‧
|
douglas
初階會員 發表:24 回覆:42 積分:38 註冊:2008-03-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |