我的Delphi开始使CPU过热.一旦我开始使用Delphi,它就会为自己带来一个完整的核心,冷却器开始真正起作用.有什么办法可以解决这个问题吗?
我知道Stack Overflow上的一些人会开始释放热量,如果我一起使用'Delphi'和'bug'这两个词,但这是一个非常讨厌的bug,因为它会浪费很多能量(特别是在电池上时)由于过热会使计算机过早老化.
更新:
仅当活动选项卡是项目(dproj)文件时,才会出现此问题.一旦切换到另一个文件(pas),CPU就会回到0%-1%.它发生在任何dproj文件中,但仅当IDE在屏幕上可见时才会发生(非最小化到任务栏).所以这显然是一个渲染错误.
更新:
看起来Warren P找到了一种产生类似bug的方法.看他的回答.
更新:
我已经看到问题也出现在一个非常大的PAS单元但是在我让Delphi IDE窗口在后台(未使用)3-5分钟后出现最大CPU利用率.我可以通过最小化窗口到任务栏或切换到另一个IDE选项卡来解决它.
从昨天开始,源代码中的所有蓝点(编译行)都向上移动了一行.因此,第一个点从'var'开始而不是'begin',最后一个点是在函数的最后'end'之前的一行.
我删除了除DPR,PAS,DFM和DPRJ之外的所有文件(从DCU开始)并重新编译.但是这些点仍在转移.我怎样才能解决这个问题?它使步骤=逐步调试几乎不可能.
EPrivilege - Privileged instruction当我执行此程序而不是Access Violation?时,为什么会得到" " ?
{$Warnings OFF}
procedure TFrmMyTest.mnuCrashMeClick(Sender: TObject);
var t: TStringList;
begin
FreeAndNil(t);
end;
{$Warnings ON}
Run Code Online (Sandbox Code Playgroud)
我知道我试图释放一个随机指向内存的对象.但我希望获得访问冲突而不是"特权指令".
(不要担心我不打算在真实程序中使用上面的代码.)
如何覆盖TIniFile.Create构造函数?
此代码无效,因为Create是静态的:
TMyIniFile = class(TIniFile)
protected
public
constructor Create (CONST AppName: string); override; <------ Error 'Cannot override a non-virtual method'
end;
Run Code Online (Sandbox Code Playgroud) 我需要将颜色传递给接受红衣主教的GetRValue.但是,TColor是整数,有时会出现范围检查错误.如果是负面,我应该将我的颜色修剪为0吗?
我想将int64与这样的变量进行比较:
const GB=1073741824;
if DiskFile.Size< 1*GB then
Run Code Online (Sandbox Code Playgroud)
它适用1但不适用3:
if DiskFile.Size< 3*GB then
Run Code Online (Sandbox Code Playgroud)
这篇文章(Strange Delphi整数乘法行为)解释了原因.我同意这个解释.2*GB的结果不能适合'整数'.我不明白为什么编译器选择整数而不是int64?如下:
if DiskFile.Size< 3073741824 then <--------- almost 3GB
Run Code Online (Sandbox Code Playgroud)
这样可行.
有没有办法用3*GB样式编写最后一行代码(使用常量)但是没有为1GB,2GB,3GB,4GB等定义新的常量?
我通过Mingw在Windows上编写了一个linux程序.但是,程序的输出在Windows上看起来与在Linux上不同.
例如,在Windows上输出是这样的(我得到'zu'而不是实数):
Approximated minimal memory consumption:
Sequence : zuM
Buffer : 1 X zuM = zuM
Table : 1 X zuM = zuM
Miscellaneous : zuM
Total : zuM
Run Code Online (Sandbox Code Playgroud)
在Linux上,原始程序编译(没有Mingw)警告.在Windows上,在Mingw下,它编译为零警告.
有什么我应该知道的吗?
Mingw是否提供100%的兼容性,或者我必须修改程序才能在Win上运行?
我不知道在哪个方向前进.我应该在哪里开始尝试修复程序?
你认为我有更好的机会与Cygwin?
更新:
维基百科提到:"缺乏对C99的支持导致了移植问题,特别是涉及printf样式转换说明符的问题".
这是我碰到头的事吗?
更新:
我的mingw版本是:
MINGWBASEDIR=C:\MinGW
gcc version 4.8.1 (GCC)
gcc version 4.8.1 (GCC)
GNU gdb (GDB) 7.6.1
GNU ld (GNU Binutils) 2.24
GNU windres (GNU Binutils) 2.24
GNU dlltool (GNU Binutils) 2.24
GNU Make 3.82.90
#define __MINGW32_VERSION 3.20
#define __W32API_VERSION 3.17
Run Code Online (Sandbox Code Playgroud)
(我使用此代码获取版本:
@echo off
REM …Run Code Online (Sandbox Code Playgroud) Chromium Embedded的GuiDemo代码(https://code.google.com/p/delphichromiumembedded/)正在泄漏少量内存。数量不多,但是每次停止应用程序时都会从FastMM收到该消息非常烦人。我猜泄漏是在Chromium接口中。该单元具有“初始化”部分:
INITIALIZATION
CefCache := 'cache';
CefRegisterCustomSchemes := CefOnRegisterCustomSchemes;
CefRegisterSchemeHandlerFactory('dcef', '', True, TFileScheme);
Run Code Online (Sandbox Code Playgroud)
日志是这样的:
A memory block has been leaked. The size is: 20
This block was allocated by thread 0x1674, and the stack trace (return addresses) at the time was:
40455E
4050A7
409C1D
405622
4050DC
4F0D7A
406598
406604
40A6C3
4F0E28
764CEE1C [BaseThreadInitThunk]
The block is currently used for an object of class: main$174$ActRec
The allocation number is: 323
--------------------------------2014/10/5 17:11:33--------------------------------
This application has leaked memory. The small …Run Code Online (Sandbox Code Playgroud) 我利用从Embarcadero通过电子邮件收到的(时间有限的)升级优惠,并升级到Delphi XE7.我喜欢.像这样的好版本出现7年:)
但我有一个问题:我不知道如何沉默一些警告.例如'最终结束后的W1011文本'."项目选项"框不同.所有这些可编辑的值都消失了.相反,我有3个条目,如'Value from:Debug configuration - All platforms'.
我在哪里可以配置全局"调试配置 - 所有平台"的事情?

有人知道delphi xe7是否与windows 10兼容?Embarcadero说XE8是兼容的.但对XE7一无所知.
delphi ×9
delphi-xe ×4
delphi-xe7 ×2
cygwin ×1
delphi-ide ×1
g++ ×1
linux ×1
mingw ×1
windows ×1
windows-10 ×1