尝试编译此代码是否会导致 IDE 终止或编译器无法运行?

2023-11-22

提防Exit内联函数中的命令用法!我这里一直使用Delphi XE3。

Symptom

在某些情况下,当调用包含以下内容的内联函数时Exit命令,以及返回值使用内联函数的directly in WriteLn(),编译器报告错误消息,

“dcc”退出,代码为 1。

或者更糟糕的是,Delphi IDE 在没有任何确认的情况下终止。

function ProcessNumber(const iNumber: Integer): Boolean; inline;
begin
  if iNumber = 0 then begin
    Result := False;
    Exit;
  end;
  // some code here ...
  Result := True;
end;

procedure Test;
begin
  writeln( ProcessNumber(0) );
end;

begin
  Test;
  ReadLn;
end.

然而,如果返回值内联函数的内容存储在变量中,然后在中使用该变量WriteLn(),问题不会发生。

procedure Test;
var
  b: Boolean;
begin
  b := ProcessNumber(0);
  writeln(b);
end;

问题

  1. 这是编译器错误吗?
  2. 如果这是一个错误,是否有解决方法可以安全地退出内联函数?

这肯定是一个错误。它出现在我测试的所有 IDE 版本中,XE3、XE7 和 XE8。老实说,我不认为你能做很多事情。对我来说,IDE 每次都会在编译时终止。我认为您只需以不会导致 IDE 崩溃的方式编写代码即可。

您可以使用强制编译使用 msbuild 的 IDE 选项。这会将编译放入一个单独的进程中,从而确保 IDE 不会崩溃。但这对你没有多大帮助,因为虽然你的 IDE 不会一直死机,但你仍然无法编译你的程序!

当您使用 msbuild 进行构建时,您会收到以下形式的错误:

错误 F2084:内部错误:GPFC00000FD-004D3F34-0

GPF 代表一般保护错误,即内存访问违规。这可能是一个未处理的异常,在编译过程中执行时会终止 IDE。

我的建议是您将错误报告提交给质量门户。这是修复缺陷的唯一方法。尽管不要指望 XE3 会出现修复。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试编译此代码是否会导致 IDE 终止或编译器无法运行? 的相关文章

  • 线程关闭期间 Win64 Delphi RTL 中的内存泄漏?

    很长一段时间以来 我注意到我的服务器应用程序的 Win64 版本存在内存泄漏问题 虽然 Win32 版本工作正常 内存占用相对稳定 但 64 位版本使用的内存却定期增加 可能 20Mb 天 没有任何明显的原因 不用说 FastMM4 没有报
  • delphi中生成随机数

    我想在delphi中创建一个随机数并将其分配给文件作为文件名 我设法做到了这一点 但是当我单击按钮生成数字时 它总是以 0 开头 知道如何修复它 procedure TForm1 Button1Click Sender TObject va
  • 如何仅在某些列中设置带有复选框的 TListView?

    我正在使用 Delphi 2010 并且我试图允许用户在 TListView 中的每行 2 个选项之间进行选择 使用 TListView 我可以将样式设置为 vsReport 并启用复选框 但这只会让我每行有 1 个复选框 我需要的是每行
  • 如何使用 Delphi Sydney 10.4.2 和 Edge Webbrowser 组件获取 HTML SOURCE

    I have TEdgeBrowser在德尔福 10 4 2 中 我想从 HTML 代码中提取基于 RegEx 的字符串 在过去 这是可能的TWebBrowser 仅适用于 IE 11 或更低版本 作为 selectedEngine 但我的
  • iOS Objective-C 对象:何时使用release,何时不使用它

    我在 iOS 下 正在使用 delphi Tokyo 进行开发 这是我的代码 aUIImage TUIImage Wrap TUIImage alloc initWithCGImage aCGImageRef try aData TNSDa
  • 能否从 Vista Shell 获取 48x48 或 64x64 图标?

    如果 Vista Shell 中存在 48x48 或 64x64 图标 如何使用 SHGetFileInfo 获取在 TImage 中显示图标的句柄 我想从图像列表中选择一个代表文件夹路径的图标 并在 Timage 中显示 48x48 或
  • Delphi - 相当于C#的三元运算符? [复制]

    这个问题在这里已经有答案了 可能的重复 Delphi 中是否存在或者将来是否存在条件运算符 https stackoverflow com questions 2108609 is there or is there ever going
  • Delphi 2007 中的 HelpInsight 文档

    我正在使用 D2007 并尝试使用 HelpInsight 功能 自 D2005 起提供 来记录我的源代码 我主要对让 HelpInsight 工具提示正常工作感兴趣 通过各种网上冲浪和实验 我发现了以下内容 使用三斜杠 注释样式比其他记录
  • 如何将 JSON 字符串转换为图像?

    我有一个将图像转换为 JSON 数组的应用程序 并将其保存到 blob 字段中 function getImage String var memorystream TMemoryStream jsonArray TJSONArray beg
  • 如何追踪手柄泄漏?

    在我的一个应用程序中 我观察到句柄数量不断增加 在不使用应用程序的情况下 该数字大约每秒增加一次 因此后台处理代码的某些部分一定存在句柄泄漏 我如何追踪此类泄漏 有什么工具可以帮助解决这个问题吗 跟踪句柄泄漏时要寻找哪些模式 导致手柄泄漏的
  • 以 png 格式剪辑幻灯片 (Delphi 2010)

    I have a filmstrip of images in png format like this 我想知道如何剪辑每个图像并将这些图像放入 TImageList 控件中 并始终保留透明度 EDIT 是的 在设计时 RRUZ 提到的技
  • Delphi中的抽象类

    我正在使用一个具有许多抽象类的组件套件 现在我想应用多态性 但在创建对象时收到错误抽象类 即使我不需要 我是否应该重写所有虚拟方法 有什么解决方法或解决方案吗 为了创建类的实例 您需要重写所有声明为虚拟抽象的方法 即使您不使用它们 如果您确
  • 如何追踪“地址 00000000”的访问违规

    我知道如何创建 map 文件来在错误消息包含实际地址时跟踪访问冲突错误 但是如果错误消息说怎么办 Access violation at address 00000000 Read of address 00000000 我从哪里开始寻找这
  • 使用 TStringList 的分隔符解析字符串,似乎也解析空格(Delphi)

    我有一个简单的字符串 由某个字符分隔 比如说逗号 我应该能够创建一个 TStringList 并将其分隔符设置为逗号 然后将 DelimitedText 设置为我想要解析的文本 并且应该自动解析它 问题是 当我查看输出时 它还包含空格作为分
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • 查找Delphi项目中的所有编译错误

    我正在对我的 Delphi 项目进行一些重构 我希望能够做出改变 然后看看all项目中因该更改而中断的地方 类似于 Eclipse 列出项目的所有编译错误 在 Java 中 在 Delphi 中 我可以进行更改 然后重新编译我的项目 但编译
  • 如何从 Delphi 中的函数返回对象而不导致访问冲突?

    我有一个返回 TStringList 的 delphi 函数 但是当我返回一个值并尝试使用它时 我收到一个访问冲突错误 即 myStringList FuncStringList myStringList Items Count lt Th
  • 如何在Delphi中显示Vista风格的气球提示?

    在输入验证时 我使用气球提示而不是消息框 我的问题是 在 Vista 上 它们具有带圆角的旧 XP 样式 而不是较新的矩形外观 我尝试使用 CreateWindowEx 创建它们并且tooltips class32或使用 SendMessa
  • 如何使 StringGrid 的列适合网格的宽度?

    我已经寻找解决方案很长时间了 但没有任何运气 有谁知道一个简单的方法来做到这一点 例如 我想拉伸网格的第二列以适应网格的宽度 Use the ColWidths财产 像这样 with StringGrid1 do ColWidths 1 C
  • 在 Delphi 或 C++ Builder 中使用 Chromium Edge WebView2 [重复]

    这个问题在这里已经有答案了 既然 Microsoft Chromium Edge 已经最终确定 是否可以在 Delphi 或 C Builder 中使用它 据我了解 它是基于WebView2成分 是否有一个组件 例如TWebView2或者E

随机推荐

  • 返回按钮在 iOS 7 中不可见

    我对 iOS 7 有一些奇怪的问题 我有一个UINavigationBar在我的应用程序中 它非常适合 iOS 6 IOS 6 然而 当我尝试在 iOS 7 上运行它时 我的后退按钮消失了 它就在那里 仍然可以工作并且可以点击 但不可见 I
  • LoadLibrary project.dll 失败。指定的模块无法找到

    当我尝试注册我的 C ATL 项目的 32 位版本时 regsvr32 project dll 我收到此错误 LoadLibrary project dll failed The specified module could not be
  • 将通用 Class 参数限制为实现 Map 的类

    我正在尝试写一个Map建设者 构造函数之一将允许客户端指定类型Map他们希望建立 public class MapBuilder
  • 删除/替换列值中的特殊字符?

    我有一个表列 其中包含我想从中删除所有连字符的值 这些值可能包含多个连字符并且长度各不相同 示例 对于我想要替换的所有值123 ABCD efghi with 123ABCDefghi 删除所有连字符并更新表中所有列值的最简单方法是什么 您
  • Windows Python2.7 mysqldb安装错误

    我正在尝试为 Python 安装 mysqldb 我正在运行 pip install mysql python 我不断收到此错误 运行 build ext构建 mysql 扩展创建 build temp win32 2 7创建 build
  • 在 MVC 框架中的 Javascript 文件中使用内联 C#

    我正在尝试使用 MVC 框架让内联 C 在我的 JavaScript 文件中工作 我编写了这个小测试代码 document ready function alert 当此代码在视图内部使用时 它可以完美地工作 当我离开我的 aspx 视图并
  • AngularJS:将服务注入 HTTP 拦截器(循环依赖)

    我正在尝试为我的 AngularJS 应用程序编写一个 HTTP 拦截器来处理身份验证 这段代码可以工作 但我担心手动注入服务 因为我认为 Angular 应该自动处理这个问题 app config httpProvider functio
  • 如何在matlab中制作圆并在其中生成随机点

    hello i want to ask a question how to make a circle in matlab and mark its center and generate a certain number of rando
  • 何时使用无符号值而不是有符号值?

    什么时候适合使用无符号变量而不是有符号变量 那么在一个for loop 我听到了很多关于这个问题的意见 我想看看是否有任何类似的共识 for unsigned int i 0 i lt someThing length i SomeThin
  • Haskell 中的 IO Int 和类似单元测试

    From 九十九道 Haskell 问题 问题23 从列表中提取给定数量的随机选择的元素 这是部分解决方案 为简单起见 此代码仅从列表中选择一个元素 import System Random randomRIO randItem a gt
  • 如果mysql表不存在则创建

    我不太使用 php mysql 但我需要一个我认为相对简单的任务 检查表是否存在 如果不存在则创建它 我什至无法获得有用的错误消息 并且数据库中没有创建表 显然我的语法有问题
  • 禁用 jqGrid 选定行的子网格扩展

    问题 带有子网格的 jqGrid 我想禁用主网格某些行的展开 折叠功能 我其实找到了一个方法 grid jqGrid setGridParam afterInsertRow function rowid aData rowelem var
  • 如何在对象数组中查询算法数据

    我有一个数据数组 其中 Algolia 索引中包含多个对象 如下所示 status available startDate 2000 10 20 endDate 2022 10 20 availablePlatform 1 2 3 avai
  • 将表标准化为第三范式

    这道题显然是一道家庭作业题 我听不懂我的教授 也不知道他在选举期间说了什么 我需要一步一步地进行说明 首先将下表规范化为 1NF 然后是 2NF 然后是 3NF 我感谢任何帮助和指导 好吧 我希望我都记得正确 让我们开始吧 Rules 让它
  • 如何使用节点谷歌客户端 API 来获取已获取令牌的用户配置文件?

    通过获取用户个人资料信息curl curl i https www googleapis com userinfo v2 me H Authorization Bearer a google account access token 通过获
  • 更改默认 JLabel 字体

    我将如何为所有人设置默认字体JLabel实例 而不是为每个设置字体JLabel独立 Use UIManager定义 JLabel 的默认字体 import java awt FlowLayout import java awt Font i
  • 收益返回和异常处理[重复]

    这个问题在这里已经有答案了 我刚刚遇到一个使用yield return 的方法 但没有抛出我期望的ArgumentException 的情况 我在这里用最简单的类重建了这个案例 class Program static void Main
  • 将十六进制字符(连字)转换为 utf-8 字符

    我有一个从 pdf 文件转换而来的文本内容 文本中有一些不需要的字符 我想将它们转换为 utf 8 字符 例如 人工免疫系统 转换为 Arti 社会免疫系统 像一个字符一样转换 我用了gdex学习ascii角色的价值 但我不知道如何将其替换
  • 如何将WebView设置为非全屏?

    我正在尝试在我的 Android 应用程序中使用 WebView 我正在代码端 而不是 XML 创建我的 webview 我的问题是 当我调用 webview 的 loadUrl 方法时 webview 进入全屏模式 如何保持 webvie
  • 尝试编译此代码是否会导致 IDE 终止或编译器无法运行?

    提防Exit内联函数中的命令用法 我这里一直使用Delphi XE3 Symptom 在某些情况下 当调用包含以下内容的内联函数时Exit命令 以及返回值使用内联函数的directly in WriteLn 编译器报告错误消息 dcc 退出