簡體   English   中英

Delphi - 從另一個 Object 訪問 Object 實例數據

[英]Delphi - Accessing Object Instance Data from Another Object

我有我的主要形式。 Form_Main

它創建兩個類的兩個實例。

Candle_Data : TCandle_Data;
Indicator_2700 : TIndicator_2700;

為了使 Indicator_2700 正確計算其值,它必須能夠從其方法之一訪問對象 Candle_Data 中的蠟燭數據。 那么 Indicator_2700 如何訪問 Candle_Data 內部的數據呢? Form_Main 是否必須在構造函數時將其作為參數傳遞?

兩個 Class 聲明都在它們自己的單元文件中。

TIndicator_2700可以具有將其鏈接到與其自己的實例相關的TCandle_Data實例的屬性,或者您應該將其作為參數提供給需要訪問數據的方法。

您當然可以將TCandle_Data實例傳遞給Indicator_2700的構造函數,並在結果實例中存儲一個引用,直到您需要它為止。

您可以使用以下任何一種(非詳盡的)方法:

  1. 將 object 引用作為參數傳遞給任何需要它的方法。 當然,您需要掌握 Candle_Data 因此這種方法的適用性實際上取決於調用者是誰。
  2. 將 Candle_Data object 引用傳遞給另一個 object 的構造函數,然后將其存儲在私有成員字段中。
  3. 使 object 引用主窗體的單個實例的公共屬性並以這種方式訪問它。

我們確實沒有足夠的信息來建議您哪個是最好的,但起點始終是首選參數和局部變量而不是全局 state。

兩個 class 聲明都在它們自己的單元文件中。

這表明兩者都與對方無關。 但是你仍然希望一個人了解另一個人。 這聽起來像是一個小小的設計混淆,但事實並非如此。

有多種解決方案,這里是其中的三個,每個都有自己的目的:

  • 將兩個班級放在同一個單元中,前提是兩個班級都有共同的主題/主題(例如Transport單元中的TCarTAirplane ),
  • 在另一個單元中使用一個單元,僅當兩個單元代表不同的主題時,但一個單元可能依賴於另一個單元(例如單元Transport使用單元FuelTCar需要TDiesel ,但TDiesel不需要TCar )。 這只能單向工作。 Delphi 防止以兩種方式使用編譯器錯誤:“循環單元引用‘燃料’”。 唯一的解決方法是在實現部分使用第二個單元,但這通常被認為是一個很大的 nono。
  • 在一個新的單元中聲明一個新的基類,只有當基類有一個共同的主題,但最終的后代沒有時(例如,所有運輸類如TCarTAirplaneTFuel都使用THorse ,但TFoodTFuel ) 僅由THorseTPerson使用。

至於如何將兩個類鏈接在一起,請參閱已經給出的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM