如何在Delphi中正确升级Zlib&;组件?

如何在Delphi中正确升级Zlib&;组件?,delphi,zlib,Delphi,Zlib,据新闻报道,目前的版本是1.2.8 可作为x32和x64 objs下载 目前我在机器上有Delphi的古老版本。 我正试图用它做点什么,并编译我的旧项目 我正处于恢复/重新安装/所有以前使用的组件的阶段, 重新检查演示和示例以刷新记忆或技能(几年内没有IDE) 在安装不同组件的过程中,我收到来自IDE的警告 像这样: 无法加载包“dcliteXX”,因为它包含单元“zlib”,该单元也是 包含在包装DelphiXV0中。你想试试吗 是否在下次加载项目时加载此包 然后我在整个/AddCompone

据新闻报道,目前的版本是1.2.8 可作为x32和x64 objs下载

目前我在机器上有Delphi的古老版本。 我正试图用它做点什么,并编译我的旧项目

我正处于恢复/重新安装/所有以前使用的组件的阶段, 重新检查演示和示例以刷新记忆或技能(几年内没有IDE)

在安装不同组件的过程中,我收到来自IDE的警告 像这样:

无法加载包“dcliteXX”,因为它包含单元“zlib”,该单元也是 包含在包装DelphiXV0中。你想试试吗 是否在下次加载项目时加载此包

然后我在整个/AddComponents目录中搜索文件,并找到:

  • ICS套件,zlib 1.2.3(最新版本),OBJs链接在zlib.pas/icsZlibObj中
  • 对象:放气、充气、inftrees、adler32、infblock、infcodes、infutil、inffast 在/OBJ目录文件中还有:解压缩、压缩、crc32、gzio、zutil

  • DelphiX/DirectX仅限zlib.dcu 1.1.3

  • hicomponents zlib.dcu 1.1.3

  • codebot,两个pas文件链接objs:

  • BareZLib使用1.0.4 from/zlib

    {$L ZLIB\DEFLATE.OBJ}
    {$L ZLIB\INFLATE.OBJ}
    {$L ZLIB\INFTREES.OBJ}
    {$L ZLIB\TREES.OBJ}
    {$L ZLIB\ADLER32.OBJ}
    {$L ZLIB\INFBLOCK.OBJ}
    {$L ZLIB\INFCODES.OBJ}
    {$L ZLIB\INFUTIL.OBJ}
    {$L ZLIB\INFFAST.OBJ}

    而BarePNG/pngzlib使用/imgzlib中的1.1.4

    同一组OBJ,但版本不同

  • 适用于1.1.3的互联网专业组件zlib.pas
  • 同一组objs+zlibc源

  • TinyDB ZlibUnit.dcu-1.1.3,+Zlib源代码的pascal版本

  • 绝地版本1.104 JCL zlibh.dcu 1.2.3

  • VGVCL单元vgZLib使用zlib,目前为1.1.3

  • IDE/lib/zlib.dcu是1.0.4:D

  • 一团糟


    zlib.net中的zlib包具有win32 objs:

    放气,充气,注入树木,树木,adler32

    输入、输入和。。。压缩,crc32

    和ZlibEx.pas、ZlibExAPI.pas、ZlibExGZ.pas


    我第一次想:我可以将新的*.obj复制到组件的/implobj目录 并重新生成包以刷新其*.bpl、*.dcp包

    但是,我对失踪感到困惑

    {$L ZLIB\INFBLOCK.OBJ}
    {$L ZLIB\INFCODES.OBJ}
    {$L ZLIB\INFUTIL.OBJ}

    在当前zlib_档案中

    第二个想法是,如果我操作我的{Delphi}/lib路径并使用 位于高位的组件路径所有编译的项目和重建包都将获得新的zlib.dcu。 /测试需要他们会工作/

    第三个想法——也许我会将所有组件单元声明从Zlib更改为ZlibEx 所有新编译的二进制文件获得当前zlib实现/二进制文件的方式

    最后还有一个疑问——为什么不可能将链接的obj统一到zlib/pngzlib单元? 如果是,如何确保png组件与新的Zlib版本配合使用


    我看不出有任何理由需要任何新的zlib.obj文件。如果我是你,我会坚持使用组件附带的.obj文件。试图放入新的.obj文件只是自找麻烦。您可能需要修改许多组件才能使其正常工作。为了什么

    如果您使用的是现代的Delphi和最新的组件,那么,如果这些组件实现良好,那么这些组件将使用delphirtl中附带的zlib单元。您可以修改组件以使用单个共享zlib单元。但是,又有什么好处呢?现在您将使用组件的修改版本,这将使未来的Delphi升级更加复杂

    在我看来,您的主要问题是有多个设计时包,其中有一个名为zlib的单元。下面是我要做的:

  • 找出哪些包具有冲突单元
  • 你真的需要所有的冲突包吗?您是否正在使用所有组件?如果没有,则丢弃未使用的
  • 也许一个项目中需要一个组件,而另一个项目中需要另一个组件?如果是这样,则仅为使用包的项目选择性地加载包
  • 您是否需要冲突组件的设计时包?如果没有,并且没有使用运行时包,则不要加载设计时包
  • 最后,将其中一个zlib单元重命名为ComponentNameZlib。这将使冲突侧滑

  • 真的很糟糕。我不熟悉“德尔菲的古代版本”。它是否有一个更常用的名称?我知道它远低于您的要求,但我会采取以下方法:1)升级库的
    zlib
    (请参阅和相应的自述)2)消除“专有”源代码为3)的所有第三方库的依赖项和链接基线zlib将更新推送到第三方存储库/问题跟踪程序中。没有消息来源,不幸的是你运气不好。更新(Delphi界面)完成。2b)。可能(源于车载组件)、车载C zlib源、上一版本~1.1.3车载Pas翻译-用于与C源进行比较)。3). 由于“支持结束”,部分不可能。问题:如何从Inprise编译的dcliteX0.bpl中删除依赖项只需在任何地方使用新的ZlibEX接口(对于新项目)并接受内部IDE旧依赖项?非常感谢冲突解决和保留旧接口的建议。无论如何,我不明白为什么我会被推到“版本地狱”的地步。这一切都源于没有zlib的旧Delphi版本,所以第三方组件不得不包含它。遗憾的是,Delphi组件世界并不擅长共享。如果这是Linux,您只需要依赖另一个包。但从来没有一个标准包包含其他组件可以依赖的zlib