我有一个IDE断点(delphi-xe),每次编译和运行程序时都会重新出现.我该如何摆脱它.德尔福在哪里保留断点信息?
更新:
1.断点未在"断点"面板中列出.
2.我使用右键单击禁用了断点(它不是灰色的),但程序仍在该行停止.
我删除了该行,断点移到了上面.
更新
在IDE外部编辑文件时会发生这种情况.我在BeyondCompare中做了很多.
应该"库路径"指向包的源文件吗?Delphi 7文档说是.但其他人说不:""库"路径应该导致编译文件(.dcp,.dcu)和(如果需要)资源文件(.res,.dfm)".
更新:
问题是如果你不在"库路径"中添加包的路径,那么每次创建一个新的DPR项目时,你必须手动收集包的路径(很多)并将它们输入到项目的选项"浏览"框,否则你将得到"找不到文件xxx.dcu".听起来不太好听.多年来,我曾经在库中添加所有路径,并且每次创建新项目时都不必手动添加路径.
关于设置路径和官方文档为0时,Delphi 7是如此混乱.:(
更新:
我做了改变.它可以工作,但它甚至不是完美的(或至少是优雅的):如何在使用具有非特定库路径的Delphi时删除重复资源(RES,DFM)?
在Delphi 7中,每当我控制+单击一个函数/过程时,它就会将我带到该函数/过程.但它在Delphi XE中不起作用 - 至少在所有功能上都没有.我在ExtUtils.pas中有一个名为Associate的函数.函数被正确编译,因此编译器可以找到ExtUtils.pas(当然,ExtUtils被添加到Uses子句中,它的文件夹被添加到'Library path'中).但是,当我控制+单击功能或单位名称时,它不会带我到那里.
有任何解决这个问题的方法吗?
UPDATE1:另外,Control +单击一个函数(在当前单元中声明)不会将光标移动到声明函数的INTERFACE部分.
UPDATE2:
我临时将ExtUtils单元放在项目的文件夹中,现在它可以工作了.因此,Control + Click本身可以工作,但似乎IDE在查找单元时遇到问题,即使它的文件夹存在于库路径和浏览路径中.
类似的报告:
http
:
//webcache.googleusercontent.com http://webcache.googleusercontent.com http://cc.embarcadero.com/Item/28269
这里有一份报告(见下面的答案)
新测试:
我已完全卸载Delphi(并手动删除文件和注册表剩余部分).然后重新安装.没有安装除CodeSite之外的其他工具,甚至没有安装数据库.然后我创建了一个新项目.它包含一个按钮.当我单击该按钮时,它会运行TestMe过程,该过程在名为TestUnit.Pas的外部PAS文件中定义.我在"库路径"和"浏览路径"中添加了此库的路径.但控制+点击TestMe程序仍然无法正常工作!如果我将鼠标悬停在TestMe过程上,则弹出窗口显示"在TestUnit中声明",其中"TestUnit"字是蓝色链接.如果我点击它我会听到Windows系统声音,但IDE不会把我带到那里(到设备).
TestMe程序是这样的:
procedure TestMe;
begin
Beep(800, 500);
end;
Run Code Online (Sandbox Code Playgroud)
如果我控制+单击Beep程序,它会转到Windows.pas.所以,这是有效的.如果您考虑到不同的测试,请告诉我.
更新:
现在它的工作原理!没有任何明显的原因!我只是打开和关闭并编译项目.但除了这两个之外,我对Delphi没有任何更改:AutoSave选项 - >编辑器文件和项目选项.
更新:
这不可能!
所以,现在我可以在控制+点击TestMe程序时访问TestUnit.pas文件.因此,我将原始PAS文件(ExtUtils.pas)移动到TestUnit.pas所在的同一文件夹中,该文件不想在我的初始测试(Delphi重新安装之前)中工作.猜猜看:我可以打开(通过控制+点击)TestUnit.pas,但不能打开ExtUtils.pas !!!!
德尔福行为如此奇怪和不一致!
更新:
我编辑了ExtUtils.pas,现在我无法打开AGAIN TestUnit.pas.Ken White不会让我说德尔福可能有错误.所以我不能将'bug'和'Delphi'一起使用.有人可以把这些话放在一起吗?
更新:
我完全删除了对ExtUtils.pas的任何引用 - 所以我将项目恢复到了它的工作点(使用TestUnit).但现在这个bug仍然存在.即使它在使用TestUnit之前几秒钟,它现在再也无法工作了.
更新:
现在我意识到一件重要的事情:在我的源代码中(在测试项目中)我有一行可编译的代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
TestMe;
end;
Run Code Online (Sandbox Code Playgroud)
此代码不显示蓝点 - 因为它不会被编译.在该计划有效的几分钟内,我看到了蓝点.我还排除了"AutoSave选项 - >编辑器文件和项目选项"作为此问题的可能原因.
更新:
我找到了解决问题的方法......几分钟:我将项目和库移动到另一个文件夹中(任何位置都可以).控件+单击将工作一段时间.如果我将文件放回原始文件夹,它甚至可以工作.因此,似乎Delphi保留了某些文件的某种缓存.只要缓存被破坏并且它保持缓存,控制+点击就赢了;工作.但是当我移动文件时,它必须重新创建该缓存,因此它将一直有效,直到问题重新出现并存储在缓存中.
在Win 7上,MessageDlg显示信息图标而不是确认图标(问号).这是代码:
MessageDlg('Are you sure you want to delete this file?'+ CRLF+ FileName, mtConfirmation, [mbYes, mbNo], 0)= mrYes
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我有一段旧代码,我想将它升级到Delphi XE.我有一个编译器警告Resume,我想替换它,Start但程序崩溃.
constructor THTTPGetThread.Create(aAcceptTypes, aAgent, aURL, aFileName, aUserName, aPassword, aPostQuery, aReferer: String; aBinaryData, aUseCache: Boolean; aProgress: TOnProgressEvent; aToFile: Boolean);
begin
FreeOnTerminate := True;
inherited Create(True);
FTAcceptTypes := aAcceptTypes;
FTAgent := aAgent;
FTURL := aURL;
FTFileName := aFileName;
FTUserName := aUserName;
FTPassword := aPassword;
FTPostQuery := aPostQuery;
FTReferer := aReferer;
FTProgress := aProgress;
FTBinaryData := aBinaryData;
FTUseCache := aUseCache;
FTToFile := aToFile;
Resume; <------------ works, but I get compiler warning
//Start; <------------ doesn't work
end;
Run Code Online (Sandbox Code Playgroud)
我使用START时得到的错误是:"线程错误:句柄无效(6)".
我不想要复杂的东西(冻结/同步线程).我只是想从互联网上下载文件而不阻止GUI.
TDirectory.GetFiles有一个名为的参数SearchPattern.Embarcadero的文档说
匹配文件名时使用的掩码(例如,"*.exe"匹配所有可执行文件).
但是,我想传递多种文件类型.我从那里得到那些类型FilterComboBox.Mask.所以,它是一个看起来像的字符串'*.txt;*.rtf;*.doc'.
我试图直接传递该字符串GetFiles,但它不起作用.我是否需要解析它,将其分解成碎片并将每个单独的部分送入GetFiles?
我有一个源自TMemo的控件.在我第一次使用Delphi XE7 VCL样式之前,它工作得很好.在Delphi XE7下,样式不会应用于控件的滚动条.如果使用黑暗的主题/风格,它看起来很可怕,而滚动条是银色的.

尝试创建一个我们可以重现错误的最小项目我发现了一些非常有趣的东西:添加/删除随机代码行(或DFM控件)会使错误出现/消失.
问题:什么真正导致这种奇怪的行为以及如何解决它?
http://s000.tinyupload.com/index.php?file_id=24129853712119260018
我刚刚将'64位平台'添加到我的项目中,我的Delphi(XE7)不断生成一个巨大的RSM文件(这会增加编译时间).根据帮助,如果禁用"包含远程调试符号"选项,则不应该发生这种情况.
如何从Delphi压缩文件(设置'c'属性)?我说的是NTFS下可用的"压缩内容以节省磁盘空间"功能.
似乎FileSetAttr不允许我为文件设置'c'属性.
我有这段代码:
INTERFACE
{$WARN SYMBOL_PLATFORM OFF}
USES
Winapi.Windows, etc, {$IFDEF MSWINDOWS}Vcl.FileCtrl, {$ENDIF} System.IniFiles;
{$WARN SYMBOL_PLATFORM ON}
Run Code Online (Sandbox Code Playgroud)
编译器显示:
[dcc32警告] W1005单元'Vcl.FileCtrl'特定于平台
即使{$ WARN SYMBOL_PLATFORM OFF}在那里.
为什么?
delphi ×10
delphi-xe ×4
delphi-xe7 ×3
64-bit ×1
breakpoints ×1
compilation ×1
compression ×1
delphi-ide ×1
ide ×1
ntfs ×1
rsm ×1
vcl-styles ×1
windows-7 ×1