Delphi-从另一个对象访问对象实例数据
我有我的主要表格<代码>表单_Main 它创建两个类的两个实例Delphi-从另一个对象访问对象实例数据,delphi,Delphi,我有我的主要表格表单_Main 它创建两个类的两个实例 Candle_Data : TCandle_Data; Indicator_2700 : TIndicator_2700; 为了使指示器_2700正确计算其值,它必须能够从其一种方法内部访问obect candle_数据中的烛光数据。因此,指示符_2700如何访问Candle_数据中的数据?Form_Main是否必须在构造函数时将其作为参数传递 两个类声明都在各自的单元文件中。tinindicator_2700可以有一个属性将其链接到与其
Candle_Data : TCandle_Data;
Indicator_2700 : TIndicator_2700;
为了使指示器_2700正确计算其值,它必须能够从其一种方法内部访问obect candle_数据中的烛光数据。因此,指示符_2700如何访问Candle_数据中的数据?Form_Main是否必须在构造函数时将其作为参数传递
两个类声明都在各自的单元文件中。
tinindicator_2700
可以有一个属性将其链接到与其自身实例相关的TCandle_Data
实例,或者您应该将其作为需要访问数据的方法的参数提供
您当然可以将
TCandle\u Data
实例传递到Indicator\u 2700
的构造函数中,并将引用存储在生成的实例中,直到您需要它为止。您可以使用以下任何一种(非穷举)方法:
- 仅当两个类都有一个共同的主题/主题(例如,单元中的
和TCar
)时,才将两个类放在同一单元中TAirplane
- 仅当两个单元代表不同的主题时,在另一个单元中使用一个单元,但一个单元可能依赖于另一个单元(例如,单元
运输
使用单元
燃料
:
需要TCar
,但tdisel
不需要tdisel
)。这只是单向的。Delphi防止以两种方式使用编译器错误:“循环单元引用到‘Fuel’”。唯一的解决方法是在实现部分使用第二个单元,但这通常被认为是一个大问题TCar
- 在新单元中声明一个新的基类,前提是基类有一个公共主题,但最终的子类没有(例如,
被所有运输类使用,如TFuel
、TCar
和TAirplane
,但THorse
的子类)仅由TFuel
和THorse
使用TPerson
至于如何将这两个类链接在一起,请参见已经给出的答案。我认为正好相反(
tinindicator
需要TCandleData
),但除了这个好答案(+1):属性和构造函数注入是显而易见的解决方案。好地方!我将修改答案,以免混淆。