delphi - 编译前验证文件版本是否正确

标签 delphi delphi-7 conditional-compilation

Delphi 自己的 LIB 文件已根据特定需要进行了更改。由于我们有几个程序员,我需要确保每个人都进行此更改,并且在将来也是如此。

由于 Delphi 库已安装且未进行版本控制,因此我需要验证它的版本是否正确。

我想在编译版本之前执行此操作。

我能够做的是创建文件的哈希值,这样我就可以确保它没有被修改

{$IF  getMD5('C:\Delphi7\Lib\arquivo.dcu') = 'B1C1CBE80477S09AC4C1B39C28FE9619'}
    {$Message Fatal 'Version of file .dcu file in Delphi7 Lib is wrong..}
{$IFEND}

这样不行,因为每时每刻都会返回[Fatal Error]

的消息

有什么想法吗?

最佳答案

我的 Delphi 时代已经过去很久了,但我使用 C++ 的方法是,向项目所依赖的库添加一个唯一的符号。然后,如果缺少该符号(即未使用您的库版本),您至少会收到链接时间错误。

这看起来怎么样(不确定这在 Delphi 中是否可行)? 除了对 LIB 进行修改之外,您还添加了一个名为“MyModificationSentinelABCDEF()”的空函数(名称并不重要,只需确保它是唯一的)。然后,您添加对此函数的调用和描述性注释来解释它为何存在以及如果存在与之相关的错误则必须执行的操作,而不是您建议的 $IF 语句。

如果缺少该函数,您应该会看到编译/链接错误。

关于delphi - 编译前验证文件版本是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56741544/

相关文章:

delphi - 将 websnap 应用程序升级到 delphi 2005 - CoInitialize 错误

Delphi 7,使用 UNC 选择目录

batch-file - 条件编译已关闭

C++11:条件编译:成员

delphi - 如何在 Delphi 选项对话框中添加我自己的项目

xml - delphi opensoure xml编写器和读取器

delphi - 加载文本时的中文符号

c-preprocessor - C/C++ 预处理器 #if with datetime

delphi - 我如何获取一个TDataset来存储空字符串而不是null?

Delphi 7 - DCPCrypt - TDCP_rijndael - DecryptString - 如何使它工作?