我已经创建了一个控制台应用程序并设置了ReportMemoryLeaksOnShutdown:= True.
我已经创建了一个TStringList但没有释放它.
程序完成执行后,我会看到内存泄漏一小段时间,然后控制台关闭.
我试过添加一个ReadLn; 到最后,但是当我这样做时它只显示一个空白的控制台窗口,这是有道理的.
我需要找到一种在内存泄漏报告之后暂停执行的方法,但是在完成程序关闭之前.
我正在使用Delphi 10 Seattle.
program Project1;
{$APPTYPE CONSOLE}
uses
System.Classes,
System.SysUtils;
var
s : TStringList;
begin
try
ReportMemoryLeaksOnShutdown := True;
s := TStringList.Create;
//ReadLn doesn't work here, which makes sense.
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
//I need to be able to pause the program somewhere after the end statement here.
end.
Run Code Online (Sandbox Code Playgroud) 用户授权失败时,是否可以在我的DataSnap(Delphi XE3)服务器中更改HTTP响应代码?目前它正在返回HTTP/1.1 500内部服务器错误,这可能发生在许多其他情况下,并没有帮助描述问题.
沿着同样的想法,是否可以更改默认的响应主体?目前,它正在返回{"error":"USER无权执行请求的操作."},这很好,但我想尽可能返回自定义JSON对象.
谢谢你的时间!
大约一周以来,当我使用 Delphi 10 Seattle 时,我不断被以下安全警告困扰:
这似乎是由于在没有打开项目的情况下显示的广告横幅造成的,但在我处理项目时它经常困扰我。
有人遇到过这个问题吗?这不是一个重大问题,但很烦人。我猜测 Embarcadero 服务器存在某种安全问题,我认为他们现在已经修复了。但时间已经过去很久了,我已经开始担心了。
我已经构建了这个问题的 MCV,并且很高兴上传它。我会先尝试描述问题。
创建一个主窗口并放置一个通过任何可用数据库连接到表的 TDBGrid。窗口的OnShow连接数据库并打开表。
在主窗口上创建一个启动非模式窗口的按钮。
在非模式窗口上创建一个启动模式窗口的按钮。
仔细按照以下步骤复制问题。
运行应用程序。
将焦点置于网格中并使用鼠标滚轮上下滚动。
按下按钮启动非模式窗口。
当非模式窗口打开时,单击回主窗口中的网格,然后再次使用鼠标滚轮上下滚动。
仍将焦点集中在网格中时,单击非模式窗口上的按钮以启动模式窗口。
当模态窗口打开时,将鼠标悬停在网格上并使用鼠标滚轮。您会看到网格上下滚动。
这种情况在 Windows 7 上不会发生,但在 Windows 10 上会发生。它可能看起来无害,但当您在 3 个窗口上构建几层父子关系时,它尤其危险。
假设模态窗口包含主窗口的孙子窗口。如果用户启动模式窗口的目的是编辑特定的孙子,并且不小心使用鼠标滚轮并在主窗口上移动祖父母,那么他们现在正在编辑他们不打算编辑的孙子。
需要注意的是,在步骤 4 和 5 之间,如果在启动模态窗口之前没有将焦点置于网格中,则不会出现此问题。在显示模态窗口之前,我尝试以编程方式将焦点设置到非模态窗口上的控件中,但没有成功。