gpt4 book ai didi

Delphi 版本号集中,但其他信息分散

转载 作者:行者123 更新时间:2023-12-03 13:31:23 25 4
gpt4 key购买 nike

背景
直到 RS10.3 我曾经使用 Andreas Hausladen DDevExtensions将我的项目源代码中的版本号设置为对所有模块(bpl's/exe)都相同,但不幸的是,Andreas 已停止更新他的 RS10.4 及更高版本的工具。
因此,我正在寻找更舒适的方法来在我的应用程序模块中设置版本号,而不是使用 NotePad++ 对所有 dproj 文件应用多文件更改。
但是......另一方面,我确实希望保留特定于模块文件的特定信息(如文件描述等)。
我也想要但不是真正的要求是让我的 (c) 通知和其他共享信息也集中在一个文件(最好是 .rc)中。
从 dproj 文件中删除版本信息(无论如何维护都很痛苦)并为每个模块都有一个特定的 .rc 文件不是问题。
另一个优点是拥有一个中央版本号和 (c) 文件在 svn 更改管理中也好得多,因为我不必因为版本/内部版本号更改而提交每个 .dproj 文件。
调查
(随着我们继续更新)
我 checkout

  • How to include Subversion revision number into Delphi project
  • Incrementing Delphi XE project version number from command line

  • 但这些解决方案并不是我真正想要的。我不是在寻找脚本,而是在寻找源文件/项目文件的方式来完成我的任务。
    所以这里是 Q
    如何拥有一个包含我的版本号的 .rc 文件,并在包含特定版本信息的其他 .rc 文件中使用它

    最佳答案

    啊,没想到这么简单……
    我创建了两个 .rc 文件,一个共享信息为 #defines SharedVersionDefs.rc :

    #define VER_MAJ 1
    #define VER_MIN 2
    #define VER_SUB 3
    #define VER_BUILD 8

    #define VER_FILEVERSION VER_MAJ,VER_MIN,VER_SUB,VER_BUILD
    #define VER_FILEVERSION_STR ""VER_MAJ,VER_MIN,VER_SUB,VER_BUILD"\0"

    // in my app file and product version are the same
    #define VER_PRODUCTVERSION VER_MAJ,VER_MIN,VER_SUB,VER_BUILD
    #define VER_PRODUCTVERSION_STR ""VER_MAJ,VER_MIN,VER_SUB,VER_BUILD"\0"

    #define VER_COMPANYNAME_STR "MyCompany\0"
    #define VER_LEGALCOPYRIGHT_STR "(c) 2020 "VER_COMPANYNAME_STR"\0"
    还有一个特定的文件(每个模块都会以不同的名称和内容重新出现) SpecificVersion.rc :
    /* Use the shared version info from a central file */
    #include "SharedVersionDefs.rc"


    #ifndef DEBUG
    #define VER_DEBUG 0
    #else
    #define VER_DEBUG VS_FF_DEBUG
    #endif

    VS_VERSION_INFO VERSIONINFO
    FILEVERSION VER_FILEVERSION
    PRODUCTVERSION VER_PRODUCTVERSION

    BEGIN
    BLOCK "StringFileInfo"
    BEGIN
    BLOCK "040904E4"
    BEGIN
    VALUE "CompanyName", VER_COMPANYNAME_STR
    VALUE "FileDescription", "Specific file description"
    VALUE "FileVersion", VER_FILEVERSION_STR
    VALUE "InternalName", "Specific internal name"
    VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
    VALUE "ProductName", "LCCAMQM"
    VALUE "ProductVersion", VER_PRODUCTVERSION_STR
    END
    END

    BLOCK "VarFileInfo"
    BEGIN
    VALUE "Translation", 0x409, 1252
    END
    END
    只需要创建这两个文件,将 delphi dproj 文件中的版本信息设置为 OFF,然后将特定的 .rc 文件添加到我希望它出现的模块的 dproj 中,在本例中是一个小的 delphi 项目:
    program VersionInfoTest;

    {$R 'SpecificVersion.res' 'SpecificVersion.rc'}

    uses
    Vcl.Forms,
    uMain in 'uMain.pas' {frmMain},
    uVerinfo in 'uVerinfo.pas';

    {$R *.res}

    begin
    Application.Initialize;
    Application.MainFormOnTaskbar := True;
    Application.CreateForm(TfrmMain, frmMain);
    Application.Run;
    end.
    我证实这有效。
    注意 : 由于 RSP-13486您还需要将 .rc 文件添加到 .dproj 文件中。只需使用 IDE 拖放即可。
    有关 .rc 文件和示例的更多信息可以在 MSDN 上找到。

    关于Delphi 版本号集中,但其他信息分散,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62591881/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com