gpt4 book ai didi

delphi - 避免 Delphi 中的代码重复

转载 作者:行者123 更新时间:2023-12-03 18:19:39 31 4
gpt4 key购买 nike

我有两个组件 A 和 B。组件 B 派生自组件 A,并与其共享大多数属性和过程。现在我有一个像这样的冗长程序:

procedure DoSomething;
begin
Form1.Caption := Component_A.Caption;
// hundreds of additional lines of code calling component A
end;

根据组件 B 是否处于事件状态,我想重用上述过程,并将 Component_A 部分替换为组件 B 的名称。它应该如下所示:

procedure DoSomething;
var
C: TheComponentThatIsActive;
begin
if Component_A.Active then
C := Component_A;
if Component_B.Active then
C := Component_B;
Form1.Caption := C.Caption;
end;

我怎样才能在Delphi2007中做到这一点?

谢谢!

最佳答案

TheComponentThatIsActive 的类型应与 ComponentA 的类型 (TComponentA) 相同。

现在,如果您遇到某些属性/方法仅属于 ComponentB 的绊脚石,请检查并对其进行类型转换。

procedure DoSomething;
var
C: TComponentA;

begin
if Component_A.Active then
C := Component_A
else if Component_B.Active then
C := Component_B
else
raise EShouldNotReachHere.Create();

Form1.Caption := C.Caption;

if C=Component_B then
Component_B.B_Only_Method;
end;

关于delphi - 避免 Delphi 中的代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155771/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com