Tag: delphi 2009

Delphi 2006-2010错误:“无法创build文件C:\ Users \ Admin \ AppData \ Local \ Temp \ EditorLineEnds.ttr”

我安装了Delphi 2007后出现错误(编辑:这个问题发生在2006年至2010年的所有delphi版本),我无法弄清楚,从来没有见过。 重新启动后,我可以启动程序没有任何问题,但如果我要closures程序,并重新启动它会给我以下错误: “无法创build文件C:\ Users \ Admin \ AppData \ Local \ Temp \ EditorLineEnds.ttr”。 该进程不能访问该文件,因为正在被另一个进程使用。“ 除非我重新启动,否则“系统”在这个文件上有句柄,不能被清除。 我也可以通过在启动程序之前重命名文件来纠正问题。 我已经尝试重新安装程序没有运气。 安装的版本:CodeGear™Delphi®2007 forWin32®R2版本11.0.2902.10471。 操作系统:Windows 7 Pro 64bit 更新08/14 13:35 EDT尝试了以下解决scheme,但仍然存在相同的文件locking问题: 将临时目录重命名为我知道具有完全安全权限的目录。 当启动Delphi时,文件将会在这个目录中被创build,但是EditorLineEnds.ttr仍然会被SYSTEMlocking,并阻止我重新启动。 卸载了以下安全更新KB2982791和KB2976897,但这并没有解决问题。 我现在已经取消了Windows更新,并尝试卸载8/13的所有安全修补程序。 完全卸载Delphi并重新安装。 重新安装一切后仍然会出现问题。 我将尝试从头重新安装Windows,并在Windows更新之前安装Delphi,以查看更新是否是真正的原因。 我现在的解决方法是在启动Delphi之前重命名EditorLineEnds.ttr。

Delphi中EProgrammerNotFoundexception?

在Delphi 2009中,SysUtils.pas在第425行中包含这一点: EProgrammerNotFound = class(Exception); 这只是一个复活节彩蛋或严重的东西? 什么时候应该提出这个例外? 在Delphi Prism和/或Free Pascal中是否也存在? 问:这个exception类是否仍然在Delphi(现在是XE7)中声明? 答:是的,甚至有logging ! 指示软件故障的非标准方式。 您可以使用EProgrammerNotFound来替代指示运行时检测到的软件故障。

有没有办法通过编程来判断FastMM是否没有释放特定的内存块?

我试图检测一个内存块是否没有被释放。 当然,经理告诉我,通过对话框或日志文件,但是如果我想将结果存储在数据库中呢? 例如,我想在数据库表中有分配给定块的例程名称。 在阅读FastMM的文档之后,我知道从4.98版本开始,我们就有可能通过pipe理员通知内存分配,释放和重新分配。 例如OnDebugFreeMemFinish事件传递给我们一个PFullDebugBlockHeader ,其中包含有用的信息。 有一件事PFullDebugBlockHeader丢失 – 如果给定的块被应用程序释放的信息。 除非OnDebugFreeMemFinish仅被称为未被释放的块? 这是我不知道,并希望找出。 问题是,即使挂钩到OnDebugFreeMemFinish事件,我无法确定该块是否被释放。 这里是一个例子: program MemLeakTest; {$APPTYPE CONSOLE} uses FastMM4, ExceptionLog, SysUtils; procedure MemFreeEvent(APHeaderFreedBlock: PFullDebugBlockHeader; AResult: Integer); begin //This is executed at the end, but how should I know that this block should be freed //by application? Unless this is executed ONLY for not freed blocks. […]

在Delphi 2009中将TMemoryStream转换为“String”

在Delphi 2009之前我们有以下代码: <span style="font: 10pt Courier New;"><span class="pas1-reservedword">function</span><span class="pas1-space"> </span><span class="pas1-identifier">MemoryStreamToString(M:</span><span class="pas1-space"> </span><span class="pas1-identifier">TMemoryStream):</span><span class="pas1-space"> </span><span class="pas1-reservedword">String</span><span class="pas1-symbol">; </span><span class="pas1-reservedword">var </span><span class="pas1-space"> </span><span class="pas1-identifier">NewCapacity:</span><span class="pas1-space"> </span><span class="pas1-identifier">Longint; </span><span class="pas1-reservedword">begin </span><span class="pas1-space"> </span><span class="pas1-reservedword">if</span><span class="pas1-space"> </span><span class="pas1-symbol">(M.Size</span><span class="pas1-space"> </span><span class="pas1-symbol">=</span><span class="pas1-space"> </span><span class="pas1-number">0)</span><span class="pas1-space"> </span><span class="pas1-reservedword">or</span><span class="pas1-space"> </span><span class="pas1-symbol">(M.Memory</span><span class="pas1-space"> </span><span class="pas1-symbol">=</span><span class="pas1-space"> </span><span class="pas1-reservedword">nil</span><span class="pas1-symbol">)</span><span […]