有人可以帮助我解释为什么在底层函数中引发异常时,TStrings被返回为"无法访问的值"吗?
function GetStrings():TStrings;
begin
result := TStringList.Create;
try
raise exception.Create('Error Message');
except
FreeAndNil(result);
raise
end;
end;
procedure TFormMain.Button1Click(Sender: TObject);
var
S : TStrings;
begin
try
S := GetStrings;
try
//Do awesome stuff
finally
FreeAndNil(S)
end;
except
//Debug watch: S = "Inaccessible value"
Assert(S = nil, 'Assertion failure, S should be nil');
end;
end;
Run Code Online (Sandbox Code Playgroud)
GetStrings
如果我FreeAndNil(result);
在重新引发异常之前没有调用,该函数也会返回"无法访问的值" .但是,我手上也有内存泄漏:-O
是否可以获得 Inno Setup 版本号以在 Inno Setup 安装程序中使用?
我找不到记录的开关来返回其版本号(例如 5.5.6),并且似乎没有暴露给 Inno Setup 脚本的预定义版本常量。