在 Windows 10 上的 Lyrix.exe(Delphi 7 旧应用程序)上加载数据库时出错

2024-02-25

有一个用 Delphi 7 编写的名为 Lyrix 的应用程序(似乎),我只有可执行文件夹(以及不再运行的安装程序)。 我无法让它在 Windows 10 上运行,但它似乎在 Windows XP、7 和 8.1 上运行良好。

它说,Error connecting to the LyriX database. LyriX will now terminate.

我尝试联系该应用程序的创建者,但似乎没有运气,它已经很多年没有更新了。


简洁版本

将区域设置更改为使用“.”作为小数点分隔符而不是“,”。 应用程序被编码为使用它所运行的计算机的区域设置/文化,这可能会随着时间的推移而改变。

所以,检查控制面板区域 -> 格式 -> 其他设置 -> 小数点符号 value.

如果您的数据库已将值存储在一个区域中并尝试将其加载到另一区域中,则它将失败,如上所述。


完整版

几天后,我设法深入兔子洞找到了问题。

首先,我在干净的虚拟机上尝试了该应用程序。我从 SysInternals 运行 ProcMon 来监视所做的一切。我监视注册表项、磁盘访问等。寻找出现错误的内容。那里没有运气。

我认为这可能是数据库驱动程序问题,或者我缺少某些 ODBC 连接或其他问题,但不,我尝试打开 ODBC 跟踪,但没有记录任何内容。我尝试按照其他地方的建议安装2010 Office System驱动程序,但这并没有解决任何问题。 我尝试了 32 位和 64 位 Windows 10 版本,都有这个问题。

然后,我进入了 exe 代码并尝试了一些工具,例如 IDR(交互式 Delphi 重构器),以查看我可以看到哪些字符串。我正在寻找数据库连接信息。数据库被硬编码以访问.mdb使用连接字符串的文件Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=xxxxx;Persist Security Info=False;Data Source=

所以我尝试更改要使用的字符串Microsoft.Jet.ACE.12.0相反,并使用 PE Explorer、Resource Tuner、DeDe、ResEdit、Resource Hacker 等工具。但仍然无法使用新的数据库连接字符串版本重新编译/保存来工作。

然后我决定需要查看错误的原因是什么,因此我需要以某种方式调试这个应用程序,以便我可以看到异常的真正原因。我刚刚收到一个通用异常 0x0EEDFADE。所以我抓住了WinDbg检查发生了什么。我涉足procdump也。但 WinDbg 为我提供了所需的堆栈跟踪,并使用了以下技术https://marc.durdin.net/2012/08/ located-delphi-exceptions-in-a-live-session-or-dump-using-windbg/ https://marc.durdin.net/2012/08/locating-delphi-exceptions-in-a-live-session-or-dump-using-windbg/,我设法在一个例外中找到了这一点:“‘2.2’不是有效的浮点数”

这个异常让我很困惑,但后来我意识到系统上的数字格式可能不同,“,”与“。”机器的区域设置/区域的问题。 事实上,Windows 10 决定将小数点分隔符的默认区域设置更改为逗号,而不是南非的句号。毫无疑问,许多其他遗留或较旧的应用程序编码不正确,但在 Windows 10 之前运行良好,将因为这个问题而停止工作。

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

在 Windows 10 上的 Lyrix.exe(Delphi 7 旧应用程序)上加载数据库时出错 的相关文章

随机推荐

  • facet_grid 中每个图基于密度的独立 alpha

    我正在构建一个facet grid using stat hexbin但是我希望每个方面图的 alpha 值都是独立的 我目前正在使用以下代码 ggplot data aes x y fill z stat binhex bins 20 a
  • 在 Bash 中连接变量[重复]

    这个问题在这里已经有答案了 我正在尝试将一个变量添加到变量的中间 因此例如在 PHP 中我会这样做 mystring arg1 12 arg2 endoffile 所以输出可能是20121201endoffile 如何在 Linux bas
  • E492:不是编辑器命令:NERDTree

    当我跑步时vim 打开文件夹时出现以下错误 Error detected while processing VimEnter Auto commands for E492 Not an editor command NERDTree Pre
  • Firefox 插件的“document_start”?

    我来自 Chrome 扩展 所以我习惯于通过设置来定义何时注入文件run at 例如 到document start用于在 DOM 构建之前进行注入 Firefox 插件有等效的吗 是的 相当于content document global
  • 用户提供的 Terminate() 函数必须是线程安全的吗?

    如中所述http en cppreference com w cpp error terminate http en cppreference com w cpp error terminate调用终止的原因有很多 我可以想象其中一些原因几
  • 在 Ruby 数组中收集重复项的最快/单行方法?

    转换数组的最快 单行方法是什么 1 1 1 1 2 2 3 5 5 5 8 13 21 21 21 到这样的对象数组中 1 gt 4 2 gt 2 3 gt 1 5 gt 3 8 gt 1 13 gt 1 21 gt 3 为了实现您想要的格
  • 如何等待WPF绑定延迟完成

    我的 ViewModel 实现了 INotifyPropertyChanged 和 INotifyDataErrorInfo 接口 当属性更改时 将触发验证 从而启用 禁用 保存 按钮 由于验证步骤非常耗时 因此我使用了 延迟 绑定属性 我
  • GAPI 的 OAuth - 首次登录 Javascript 后避免身份验证和授权

    我创建了一个 chrome 扩展 可以读取电子邮件 执行某些操作并使用 javascript 的 google 客户端 API 创建任务 我使用 chrome 身份进行身份验证和授权 扩展按预期工作 然而 它每隔一段时间就会要求签名 我想要
  • Boost::Log 和日志编号

    我最近尝试通过 Boost log 将一些日志记录添加到一个小型应用程序中 但是 使用日志轮换 由于某种原因 我无法让它在日志目录中拾取正确的计数器 例如 如果我的Logs目录包含文件Log 000 log and Log 001 log我
  • 将 javascript 注入 SwiftUI WebKit

    如何将 SwiftUI WebKit 视图的文本大小设置为 State 变量 我有这段代码 允许我在 SwiftUI 中使用 WebViews import SwiftUI import WebKit struct WebView UIVi
  • 如何在 Angular 2 中实现 Chart.js?

    我正在使用最新版本的 Angular 2 V4 0 0 并且我想在我的项目中使用 Chart js 库中的图表 而不会有太多复杂性 如何在我的 Angular 项目中实现 Chart js 并且不会在最终生产中给我带来问题 您可以按照以下说
  • 如何在Opencart中添加子选项?

    我使用的是最新的3 0 2 0版本的opencart 对于选项 我想添加子选项 我也想像选项一样对子选项进行定价 从 2009 年及更早的时间起 有很多关于 opencart 的依赖选项的讨论 但它从未出现在核心版本中 为什么大家都说实现依
  • 有任何 API 或 Web UI 项目来管理 Docker 私有注册表吗?

    我找不到如何管理私人注册表中的图像 我可以推送或拉取图像 因为我知道 id 但如何获取推送图像的列表 举例来说 一个人想要查看其组织的私人注册表下的可用图像 她该怎么办 除非我弄错了 否则我找不到 API 或 Web UI 来发现注册表内容
  • 更改 Mac/Linux 上进程的用户所有者?

    我有一个以 root 身份运行的程序 该应用程序调用另一个程序 processA 来运行 当 processA 运行时 它由 root 拥有 但我希望它的所有者是当前登录的用户 怎么做 嗯 这有点棘手 取决于它是守护进程 服务 还是运行此命
  • 可以从 Google Chrome 设置面板中的地址栏(小书签)运行 Javascript 吗?

    我想制作一个书签来打开谷歌浏览器的设置面板并通过单击清除我的缓存 一段时间以来 我有一个书签 可以打开 Chrome 的设置面板 并已选择 清除缓存 设置 单击书签 通常在新选项卡中打开它 后 我必须打开该选项卡并提交表单 然而 在开发时
  • msiexec MsiSetExternalUI 的外部处理程序

    早上好 我希望为 msiexec 实现一个外部处理程序 但不能阻止 msiexec 执行任何不同的操作 我希望能够利用 MsiSetExternalUI 拦截所有消息 但仍然对最终用户具有相同的响应和对话框 我的主要目标是拦截安装 msi
  • UIImage 方面适合并对齐到顶部

    看起来像aspect fit默认情况下将图像与框架底部对齐 有没有办法override对齐同时保持aspect fit intact 编辑 这个问题早于自动布局 事实上 在提出这个问题的同一周 汽车布局就在 WWDC 2012 上公布了 简
  • 如何使用 ChefSpec 测试我的 LWRP?

    我创建了自定义 LWRP 但是当我运行ChefSpec https github com sethvargo chefspec单元测试 它不知道我的 LWRP 操作 这是我的resource actions install uninstal
  • 配置文件模板生成makefile

    Linux 中几乎所有开源 C 项目都有一个 配置 文件 用于在构建源代码之前生成 Makefile 我正在从头开始编写一个项目 这个 配置 文件有任何模板吗 大多数时候 配置文件不是手动创建的 而是由诸如autoconf http www
  • 在 Windows 10 上的 Lyrix.exe(Delphi 7 旧应用程序)上加载数据库时出错

    有一个用 Delphi 7 编写的名为 Lyrix 的应用程序 似乎 我只有可执行文件夹 以及不再运行的安装程序 我无法让它在 Windows 10 上运行 但它似乎在 Windows XP 7 和 8 1 上运行良好 它说 Error c