我可以生成自定义编译器错误吗?如果是这样,怎么办?

2023-12-31

这就是我想做的。我有一个项目必须在某些版本的 Delphi 或更高版本中编译。我想使用条件编译器指令来测试 Delphi 版本,然后使用自定义消息生成自定义编译器错误。如果不可能出现错误,能够生成自定义编译器警告或提示也足够了。

当然,我可以在条件代码段中放入一些无法编译的乱码,这很好。但我的问题是“我可以有条件地生成自定义编译器错误吗?”


谢谢约翰和塞尔格。

这是解决方案以及有关该问题的更多详细信息。我有一个最初在 Delphi 2007 中构建的应用程序。它包括附加到 Web 服务的 Internet Direct 组件。这些使用 SSL。我最近将 SSL 库升级到更高版本,但这些库与 Delphi 2007 Indy 组件的配合不太好。我现在添加了以下编译器指令,以确保该应用程序将不再使用 Delphi 2007 或更早版本进行编译:

{$IF CompilerVersion <= 19.0} // Delphi 2007 = 19.0
   {$MESSAGE Error 'This project must be compiled in Delphi 2009 or later'}
{$IFEND}

您可以使用:

{$Message HINT|WARN|ERROR|FATAL 'text string' } 

  
{$MESSAGE 'Boo!'}                   emits a hint 
{$Message Hint 'Feed the cats'}     emits a hint 
{$messaGe Warn 'Looks like rain.'}  emits a warning 
{$Message Error 'Not implemented'}  emits an error, continues compiling 
{$Message Fatal 'Bang.  Yer dead.'} emits an error, terminates compiler 

See: http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/compdirsmessagedirective_xml.html http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/compdirsmessagedirective_xml.html

这适用于 Delphi 6 及更高版本。

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

我可以生成自定义编译器错误吗?如果是这样,怎么办? 的相关文章

随机推荐

  • Crockford 风格的上下文着色是否在任何代码编辑器中实现?

    我观看了 YUIConf 2012 的视频 其中 Douglas Crockford 发表了有关在 JavaScript 中实现 monad 的演讲 在本次演讲中 他给出了一个代码示例 该示例利用了他所谓的 上下文着色 它抛弃了按语言语法着
  • 为什么具有 UNC 路径的 .NET 的 File.Open 会进行过多的 SMB 调用?

    我有一段代码需要使用 UNC 路径从 NAS 服务器打开并读取大量小文本文件 此代码是最初用 C 编写的模块的一部分 但现在正在转换为 C C 版本明显慢一些 我确定打开文件的调用几乎是所有性能差异的原因 使用 WireShark 我发现这
  • 在 Linq 查询中比较 byte[]

    我的 SQL 表中有一个二进制列 我使用以下 C 代码成功查询了该表 var hash http www whatever com ToSHA256HashBytes var landingPage context LandingPages
  • 使用 Order By 函数计算两点之间的距离(长、纬度)时 MySQL 查询速度变慢

    我在 MySQL 中有一个查询 它在表的每一行上运行一个存储函数 然后根据函数的结果对行进行排序 然后返回前 10 行 SELECT rowId MyFunction x y constX constY AS funResult FROM
  • 使用 C# 将 UTF-8 转换为 Unicode

    请帮帮我 我在 GET 请求后编码响应字符串时遇到问题 var m refWebClient new WebClient var m refStream m refWebClient OpenRead this m refUri var m
  • Django:使用排除的字段验证 ModelForm 中的 unique_together 约束

    我有一个表格 class CourseStudentForm forms ModelForm class Meta model CourseStudent exclude user 对于具有一些复杂要求的模型 class CourseStu
  • 给定的二叉树是否完整[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 给定一个二叉树 编写一个函数来检查给定的二叉树是否是完全二叉树 完全二叉树是这样的二叉树 除了最后一层之外 每一层都被完全填满 并且所有节
  • NHibernate Criteria 根据另一个表中的 itemid 的分组依据和总和来选择项目

    public class SearchText public virtual int Id get set public virtual string Text get set public class SearchTextLog publ
  • iOS 8+ 远程通知功能始终启用

    仅适用于 iOS gt 8 在我的 AppDelegate 中 我注册用户通知 如下所示 BOOL application UIApplication application didFinishLaunchingWithOptions NS
  • 从动态库调用 fprintf (c++)

    我正在创建一个包含日志记录类的 Windows DLL 库 该类中的日志函数只是像这样调用 fprintf 来进行测试 fprintf stderr 调试 s n 你好 现在 如果我从其他项目 使用该库 中的任何文件中的任何函数使用它 这个
  • 更改字体很棒的图标中的字体大小

    我正在使用 parallax pro genesis 子主题 因此我正在小部件区域内工作 我不确定我是否以正确的方式处理这个问题 但我尝试通过在小部件区域中执行此操作 在很棒的字体图标下进行书写 i class fa fa code fa
  • 当“try .. except IOError”没有捕获FileNotFoundError时如何处理它?

    如何捕获 python 3 上的错误 我用谷歌搜索了很多 但似乎没有一个答案有效 文件 open txt 不存在 因此应该打印 e errno 这就是我现在尝试的 这是我定义的函数 try with open file r as file
  • Python 中的重复排列

    我想迭代一个的所有顶点n尺寸为 1 的维度立方体 我知道我可以做到这一点itertools product如下 gt gt gt n 3 gt gt gt for j in it product 0 1 repeat n print j 0
  • 在钥匙串访问中生成证书签名请求:使用哪个私钥?

    我想知道 Mac OS X Snow Leopard 现在的 Lion 中使用哪个私钥 Keychain Access 每当我使用该应用程序创建 CSR 时 它甚至不要求使用私钥 那么它使用哪一个呢 我可以想象它使用了所选的一个 if您已在
  • 捕获两个重叠元素上的鼠标悬停事件

    所以我有一个 d3 图表rect覆盖以固定十字准线元素mouseover事件 在覆盖层下 我有其他显示数据的矩形mouseover事件处理程序也是如此 但是覆盖层被阻塞mouseover事件在下面的子矩形上形成触发器 let chartWi
  • C 中的静态数组初始化

    考虑以下陈述 typedef struct int member1 int member2 Custom t void ISR void static Custom t struct1 SOME CONSTANT 如何在 C 编程中将所有
  • 在 R 中读取以多个空格作为分隔符的文本文件

    我有一个大数据集 由大约 94 列和 300 万行组成 该文件具有单个和多个空格作为列之间的分隔符 我需要在 R 中读取该文件中的一些列 为此 我尝试使用 read table 以及可以在下面的代码中看到的选项 代码粘贴在下面 Defini
  • iOS 应用程序中的 Airplay 镜像

    我查看了几个链接并阅读了 Apple 文档 但没有得到任何在外部设备上镜像应用程序内容的分步说明 他们所解释的只是如何在识别到外部屏幕时显示新窗口 在我的应用程序中 我只需要在支持 Airplay 的设备上显示应用程序中显示的当前屏幕 有一
  • bash:expect 可以处理多个密码提示吗?

    我目前正在使用 Expect 来传递密码 这样我的脚本就可以自动运行 而无需我坐下来一遍又一遍地输入相同的密码 重要提示 请不要评论这有多大的安全风险或我应该如何使用 ssh 密钥 如果可以的话我会使用这些密钥 但我必须使用的设置不允许这样
  • 我可以生成自定义编译器错误吗?如果是这样,怎么办?

    这就是我想做的 我有一个项目必须在某些版本的 Delphi 或更高版本中编译 我想使用条件编译器指令来测试 Delphi 版本 然后使用自定义消息生成自定义编译器错误 如果不可能出现错误 能够生成自定义编译器警告或提示也足够了 当然 我可以