【问题标题】:Compatibility on WinXP and VistaWinXP 和 Vista 上的兼容性
【发布时间】:2011-01-11 09:14:18
【问题描述】:

我还使用第三方组件(在 D7、WinXP 上开发)开发了一个应用程序。 当我在 XP 上部署此应用程序时,一切正常。当我在 Vista 上运行它时,应用程序停止正常工作:

  • 工具栏上的工具按钮大小不一样,当我打开/关闭可见性时,这就是为什么(第三方)皮肤没有正确嵌套,然后看起来很难看。这很麻烦,很烦人,但下一点并不致命。

  • 第三方文本处理组件停止写入。我编写了一些例程,允许在某些情况下在此组件上进行编写。发现我不能写任何东西是一个很大的震惊(可能这些例程在写时返回 false,但我看不出任何原因,为什么在 XP 上它应该可以正常工作,但在 Vista 上却不行)。

应用程序运行(最终),但不妨碍,就像它应该的那样!!!!

我想调试它,但是如何调试呢?

  • 我应该在这台有问题的 Vista 计算机上安装 Delphi 7 并在上面编译项目吗? (就是这样,我要做什么……)
  • 是第三方组件的问题吗?
  • 是否有可能使用一些编译器指令来确保该应用程序可以在 Vista 上完美运行? (老实说,我不知道 Vista 是否一般要求)。
  • Delphi 7 对于 Vista 来说太旧了吗?

注意: 当我在 Win98 上运行相同的应用程序时,我收到有关无效浮点操作的错误消息...

有没有人解决过这样的问题?

谢谢

【问题讨论】:

  • 请将您的问题一分为二:一是关于 Vista,一是关于 Windows 98。

标签: delphi delphi-7


【解决方案1】:

如果 Delphi 7 与 Windows Vista 兼容,则仅意味着以下一种或两种情况:

  1. 您可以在 Windows Vista 上运行 Delphi 7
  2. Delphi 7 可用于编写可在 Windows Vista 上运行的程序

它确实自动意味着

  • 我在 Delphi 7 中创建的所有程序都在 Windows Vista 上运行
  • 我在 Delphi 7 中创建的所有程序都可以在 Windows Vista 上正常运行

让我给你打个比方:你可以用锤子把钉子钉在墙上而不伤到自己,但这并不意味着无论你做什么都不会伤到自己。

如果您的程序,无论是在您自己的代码中,还是作为您使用的第三方组件的一部分,都使用了已更改甚至可能被删除的 Windows 部分(尽管这要少得多),那么您需要修复您的程序,没有办法解决。

也没有灵丹妙药,所以没有编译器指令或诸如此类的东西。我能想到的最多的是,也许 Windows Vista 对快捷方式有一些兼容性设置,这些设置可能会打开 Vista 中的某些 XP 兼容性层,从而解决您遇到的特定问题。

但是,唯一的长期解决方案是更改您的程序,使其与 Windows Vista 正确兼容,并且可能还与 Windows 7 兼容。

既然您说您使用的是第三方组件,那么您是否验证过您使用的特定版本是否与 Vista 兼容?你需要去作者的网站上查看才能找到。也许可以通过简单地升级这些组件来解决。

但是,您也可能需要对自己的代码进行更改。

继续前进的最佳方法是安装 Vista 和可能的 Windows 7,并开始调试以尝试找出问题的根本原因。

请注意,仅在 Vista 上安装 Delphi 7 并重新编译不会解决任何问题。如果您在特定的 Windows 版本上编译它,编译器不会生成不同的程序。只有对代码的更改才会应用必要的更改。

【讨论】:

  • 感谢您的全面回答。与此同时,我认识到自己在项目中的失败。所以这不是Vista的问题。我没有编写线程安全的代码,所以日期和时间的函数使用了不同的格式设置,这就是我所期望的……然而皮肤组件的行为不同,所以内部有一些不同的东西,我不能直接控制。对我来说令人不安的问题是,如何编写一个可以在“我的姊妹计算机”上运行的应用程序......有没有什么办法可以确保 95% 的应用程序不会在不同的计算机上崩溃?
  • 广泛的测试。欢迎来到生产质量软件的世界。正如我在回答中所说,没有灵丹妙药。你真的需要编写强大的软件来提醒用户任何问题,这样你从他们那里得到的报告不仅仅是“它崩溃了”。例如,包含异常消息、堆栈跟踪等的崩溃报告将是无价的。但是要准备好处理错误,编写无错误的代码非常困难。您需要在花费时间使其健壮与添加新功能之间取得适当的平衡。
【解决方案2】:

最简单的解决方案是确保您的 Delphi 版本和第 3 方组件与 Vista 兼容。

自 2007 年以来的 Delphi 版本。 最近的 TMS、DevExpress 和 Raize 组件是。

困难的解决方案是自己进行所有更改。 准备好从 2002 年开始修改 VCL 源代码,仔细修改它们以使它们达到 Delphi 2007 的水平。 然后对您的第 3 方组件执行相同操作。

--杰罗恩

【讨论】:

  • 根据互联网上的信息(以及 Stackoverflow 上的信息),D7 与 Vista 兼容,并且在其上编译的程序(应该)在 Vista 下运行。到目前为止,文本处理工具运行良好。
  • 查看 Lars 的回答以获得更多详细信息。 Delphi 2007 是专门为解决 Vista 问题而创建的。 Delphi 7 可以安装在 Vista 中,您可以在其中编写在 Vista 上运行良好的应用程序,但您需要为此做很多手动工作。切换到开箱即用的支持 Vista 的 Delphi 2007 和第 3 方组件要容易得多。这将为您节省大量时间。
【解决方案3】:

我从未真正调查过,但我注意到在我拥有的某些应用程序中,在所有皮肤模式(XP-teletubbie 和 Vista/W7 非经典模式)中,如果我直接放置按钮和标签,我会在所有 delphi 版本中绘制工件在 tframe 或 ttabsheets 上。

当我在中间插入一个面板时,问题就消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 2011-06-30
    • 1970-01-01
    • 2018-05-18
    相关资源
    最近更新 更多