0

在我的 Delphi7 应用程序中,我可以在以管理员身份(“Dave”)登录时连接到数据库,但在以标准或受限用户(“Paris”)身份登录时不能。发生在 XP Home 和 Vista Business Ultimate 64 上。我为 db 使用别名。数据库是 Firebird,中间件是 IBO 4.7。

我在另一个线程中发布了这个,但我知道我有更多信息,而且 BDE 似乎是问题所在。显然 DB.Pas 已链接。我可以在 project.map 文件中看到它,并且 exe 读取注册表以获取 BDE 别名。

我已经删除了所有与 BDE 相关的源和 dcu 文件,我已经在项目中详尽地搜索了一个 DB 组件并且它变得干净了。

有人去过吗?

4

3 回答 3

4

假设您没有使用包构建 - 从磁盘中删除 db.pas 和 db.dcu(例如,将它们重命名为 db!.pas 和 db!.dcu)并重建。编译器应该在引用 db 的地方停止。

于 2009-05-10T07:48:41.473 回答
3

顺便提一下,你是否也检查了所有的USES子句?

你不必担心的不是 Db.pas,我不熟悉 IBO,但我怀疑它也使用 Db.pas (TDataSet, TDatasource)。

您必须在其中查找 DbTables 单元和组件。它包含一个全局声明和实例化的 Session 变量。和 TSession 链接到 BDE。

于 2009-05-09T21:03:12.587 回答
1

我在你的帮助下解决了。首先 gabr 建议我删除 .dcus。我有,但找到了一些,包括 db.dcu。杀了它。现在编译停止在使用 IB.dcu(Borlands 接口到 Interbase)。杀了它,并得到了编译。在 .map 中为 DB 寻找 - 不存在。仍然不能像巴黎那样工作,所以我在消息来源中发现了一条 Jason 评论,其中显示 TConnection 的 AliasName 属性是用于 BDE 别名,而不是 FireBird 别名,所以我将该属性设置为空白。

在 Paris 下运行 exe,它起作用了!

现在,我需要告诉你我周末把这个带回家了,希望能集中注意力。当它起作用时,我大叫 BLOODY BONZER!在我的声音的最高点 - 所有三只猫都躲了起来。

“IB”——70 万行代码中的 3 个字符!

因此,如果有人被这个鬼魂困扰,请 grep 寻找 IB!

谢谢大家(女孩?)-我如何为您提供最佳答案?

谢谢,戴夫。

于 2009-05-11T01:23:37.363 回答