初始化我有一个类如何对象在德尔福XE VS XE4
type
TLoadOption = class
private
FAutoSearch: Boolean;
public
property AutoSearch: Boolean read FAutoSearch write FAutoSearch;
end;
在我在堆栈创建的类的对象
procedure MyView.InitializeForm(const aMsg: MyMsg);
//---------------------------------------------------------------------------
var
Options: TLoadOption;
begin
if aMsg.OptionalObject <> nil then
Options := aMsg.OptionalObject as TLoadOption;
if Assigned(Options) and Options.AutoSearch then
DoRefresh;
end;
我没有经过任何的功能之一在aMsg中如此理想选项没有设置。
在德尔福XE默认情况下选项设置为零,所以这个DoRefresh不会被调用,但是当我在Delpi XE4中执行相同的代码时,选项用一些随机值进行初始化,并且AutoSearch总是变为真,并且它导致调用这个DoRefresh功能是不受欢迎的。
我想知道是否有任何编译器选项将默认值设置为未初始化的变量。我作为目前唯一的解决办法是这样的
procedure MyView.InitializeForm(const aMsg: MyMsg);
//---------------------------------------------------------------------------
var
Options: TLoadOption;
begin
Options := nil;
if aMsg.OptionalObject <> nil then
Options := aMsg.OptionalObject as TLoadOption;
if Assigned(Options) and Options.AutoSearch then
DoRefresh;
end;
这是一个正确的方式?
什么是MyMsg?这是一堂课,记录还是什么?你说默认值,但这个参数在你的情况下没有默认值。你如何分配默认值? – Darthman
编译器没有警告你有关该代码?它应该告诉你'选项'是未初始化的。切勿忽略编译器警告。 –
你接受了解决问题的最佳答案,但实际上并没有回答你问的问题。你询问了一个局部变量的初始化。 –