我有很多计算列,他们不断重复自己,一个在其他内部,包括嵌套的case语句.
有一个非常简化的版本,我正在寻找一种方法.
SELECT
(1+2) AS A,
A + 3 AS B,
B * 7 AS C
FROM MYTABLE
Run Code Online (Sandbox Code Playgroud)
提前致谢.
TMyClass = class(TObject)
private
FMyObject: TObject;
function GetMyObject: TObject;
public
property MyObject: TObject read GetMyObject write FMyObject;
end;
function TMyClass.GetMyObject: TObject;
begin
if FMyObject = nil then
FMyObject := TObject.Create;
Result := FMyObject;
end;
Run Code Online (Sandbox Code Playgroud)
有时,"MyObject"不是在内部创建的,而是在外部创建并分配给参数.如果在外部创建此对象,则无法在此上下文中释放它.
我应该创建一个TList并添加内部创建的所有对象并销毁析构函数上的所有内容吗?
如果参数是在内部创建的,那么如何控制参数的生命周期?你建议做什么?有没有任何模式可以做到这一点?
TBaseClass = class
public
destructor Destroy; override;
end;
TFirstClass = class(TBaseClass)
FMyProp: string;
end;
TSecondClass = class(TBaseClass)
FMyFirstClass: TFirstClass;
end;
Run Code Online (Sandbox Code Playgroud)
我需要实现一个DESTRUCTOR,它能够从同一个基类中找到所有(对象类型)字段并给它一个Free来避免所有这些内存泄漏.
为什么?因为FMyFirstClass可以创建或不创建,这取决于我的应用程序的流程,我无法保证何时将其创建为Free it,既不想用NIL检查所有析构函数来检查代码,因为我有一个很多像这样的领域.
我正在尝试使用新的RTTI来获取基于TBaseClass的所有字段,但我无法获得对象字段的实例,而且我没有想法.
我会走正路吗?你建议做什么?