发现Delphi Tokyo中的异常处理与以前的Delphi版本略有不同.
function FuncTest: integer;
begin
Result := 1;
try
raise Exception.Create('Error Message');
finally
Result := 2;
end;
end;
function Test:integer;
begin
Result:=0;
try
Result:=FuncTest;
finally
ShowMessage(Result.ToString);
end;
end;
Run Code Online (Sandbox Code Playgroud)
在早期的Delphi版本中,消息框显示"2",东京 - "0".这是一个东京错误还是不应该像这样处理异常?
是否有一种通用的方法将列表视图中的特定项目(例如1000中的500)放在其中心?现在我正在使用此代码:
lvData.Items[iIndex].MakeVisible(False);
Run Code Online (Sandbox Code Playgroud)
它很简单,但有一个缺陷 - 大部分所需的项目出现在列表视图的顶部或底部.是的我知道,手动滚动它并不是一件大事,但我使用它的方式(在图表上选择一个点并查看列表视图中附近点的值)会使这种行为有点不舒服.
我已经使用 FastMM 很长时间了,总是在所有 Delphi 项目中放置“FastMM4”。这对于最新的 Delphi 版本有意义吗?
Application.Run过程调用一个处理Windows消息的无限循环:
repeat
try
HandleMessage;
except
HandleException(Self);
end;
until Terminated;
Run Code Online (Sandbox Code Playgroud)
Terminated只能通过Application.Terminate发送PostQuitMesage的过程将该属性设置为true .我想更改消息处理循环,以便我可以使用全局变量直接停止它(不使用消息队列):
var MyTerminated:Boolean
....
repeat
try
HandleMessage;
except
HandleException(Self);
end;
until Terminated or MyTerminated;
Run Code Online (Sandbox Code Playgroud)
问题是,是否可以使程序使用您自己的Application.Run版本?