0

我在一家企业工作,在 ESRI ArcGIS 的基础上设计、创建和维护自定义应用程序。一些客户使用 Direct Connect 连接到存储在 Oracle 或 MS SQLServer 上的数据库。几个月来我一直在使用独立应用程序。

我有一个应用程序,用 Delphi 编写。当然,我做的第一件事就是打开工作区。

pWorkspaceFactory:= CoSdeWorkspaceFactory.Create as IWorkspaceFactory;
pWorkspaceFactory.OpenFromFile('D:\directconnect.sde', WndHandle, pWorkspace);

这适用于所有“正常”连接,在某些直接连接的情况下也可以正常工作。但是在调用 OpenFromFile 时,我可能会在不同的数据库上获取 stackoverflow。在 delphi 项目的项目选项中提高 MaxStackSize 使其适用于某些 Direct Connect 数据库。但这并不适用于所有人。

有人知道在没有 ArcMap 的情况下在独立应用程序中处理 Direct Connect 的正确方法吗?在 ArcMap 中访问数据库从来都不是问题,我认为 ArcMap 对 Direct Connect 有特殊处理。

感谢所有的想法和回复。愿答案与你同在;-)

问候

战心

4

2 回答 2

1

感谢您的评论。目前我无法发布有关该异常的更多详细信息,因为我无法在我的测试数据库上重现它。只有在野外才会发生异常。但我可以说它发生在(对我而言)封闭的 ESRI-Dll 中,我看不到 dll 方法的调用堆栈(OpenFromFile 是 ESRI-Dll 中的 ESRI 方法)。我想发布这样的东西,但我不能。

于 2009-09-09T07:12:06.210 回答
0

它可能与您使用的 DC 库有关吗?每个版本的 ArcGIS 和每种类型的数据库都有单独的库。

于 2009-10-28T18:14:12.087 回答