在ForceDirectories语句之后,Delphi退出该过程

在ForceDirectories语句之后,Delphi退出该过程,delphi,Delphi,我有一个简单的过程,但我发现了一个问题,在调试过程中,我发现Delphi executeForceDirectory成功,但直接跳到过程的末尾,而不执行后面的行,这是为什么 var export_dir: string; grd_idx: integer; begin export_dir := 'c:\app1\export\'; SysUtils.ForceDirectories(export_dir); showmessage('this line executed then

我有一个简单的过程,但我发现了一个问题,在调试过程中,我发现Delphi execute
ForceDirectory
成功,但直接跳到过程的末尾,而不执行后面的行,这是为什么

var
export_dir: string;
grd_idx: integer;
begin
  export_dir := 'c:\app1\export\';
  SysUtils.ForceDirectories(export_dir);

  showmessage('this line executed then it jump to the end !!');

  for grd_idx := 0 to pred(pagecontrol1.ActivePage.ComponentCount) do begin

    if (pagecontrol1.ActivePage.components[grd_idx] is Tmycomp) then
  ExportToExcel(export_dir+(pagecontrol1.ActivePage.components[grd_idx] as Tmycomp).Name, (pagecontrol1.ActivePage.components[grd_idx] as Tmycomp),
    true, true, true, 'xlsx');

  end;

end;
我使用DelphiXe5,64位项目

更新: 我还注意到,在showmessage之后的行上放置断点时,有一个代表无效断点的x图标,而不是代表有效断点的红色小图标,因此我从过程的开头开始跟踪,我可以确认从该行开始,从
for
循环开始,它不会被执行


ExportToExcel是将数据导出到Excel的内置过程。

很可能
pagecontrol1.ActivePage.ComponentCount=0
和循环内的代码从未执行过


另外,若调试器甚至并没有尝试进入周期的第一行,那个么很可能你们已经开启了优化。检查项目属性“编译/代码生成”(并确保使用构建配置“调试”)。

我刚刚使用64位可执行文件在XE4上进行了测试,代码按预期运行。您能否创建一个完整的SSCCE控制台应用程序来复制该行为?Windows的哪个版本,您是以管理员身份运行的?如果
C:\app1
文件夹不存在,则必须先创建该文件夹,然后才能导出
export
文件夹,并且非管理员用户不能在启用UAC的Windows Vista及更高版本下创建
C:
根目录下的文件夹。您没有检查
ForceDirectories
的返回值(或者您可以简单地使用debug dcu构建并进入调用以查看失败的原因)。@KenWhite Win7 64位作为管理员,文件夹创建成功,我逐步通过代码,它从该行跳转到
结尾!!!我无法复制它(参见我的答案)。同样,我的建议是使用debug DCU进行构建,并进入对ForceDirectory的调用以查看发生了什么。在您做出决定之前,我不会检查任何内容,然后为您的问题提供必要的信息。我不知道ExportToExcel
可能会做什么,你正在向
Tmycomp
输入什么,或者
Tmycomp
首先是什么,你还不清楚问题发生在哪里。