首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从代码中关闭BDE

从代码中关闭BDE
EN

Stack Overflow用户
提问于 2012-04-19 17:06:31
回答 2查看 1K关注 0票数 3

我们有一个遗留应用程序使用BDE。(考虑到BDEcontinues的年龄,它的工作效果令人惊讶)。

有时,我们的应用程序需要操作文件夹(重命名、移动等)。但是文件夹中的.NET或.LCK文件仍然处于打开状态,从而防止了这种情况。我们无法在代码中找到任何仍处于打开状态的表或查询。

除了让我们的程序外壳到一个非BDE程序并自行终止之外,我们是否有一种程序方法来关闭BDE,这将解锁这些文件。

标准免责声明:是的,BDE已经死了。是的,我们应该迁移到一个更现代化的数据库。是的,总有一天BDE会失效。由于有了将近200万行遗留代码,迁移(即使使用Sybase Advantage这样的插件兼容的平台)并不是一个廉价的项目,这就是为什么我们还没有这样做.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-19 17:55:20

您通常没有任何特定的做法来关闭BDE。

在DBTables的终结部分中释放所有BDE会话。这将关闭所有内容,当默认会话也被销毁时,它将在需要时调用DbiDLLExit,然后调用DbiExit,这两者都来自BDE单元。

现在,如果您想在之前关闭BDE ,我建议您模拟DBTables的初始化部分(免责声明:有限的测试,仔细使用.)像这样:

代码语言:javascript
复制
procedure BDEKill;
begin
// from finalization
  Sessions.Free;
  Sessions := nil;
end;

procedure BDEReStart;
begin
// from initialization
  Sessions := TSessionList.Create;
  Session := TSession.Create(nil);
  Session.SessionName := 'Default'; { Do not localize }
end;

并把它当作:

代码语言:javascript
复制
BDEKill;
try
  // move my folders
finally
  BDEReStart;
end;
票数 2
EN

Stack Overflow用户

发布于 2012-04-19 19:13:46

解锁文件是解决问题的另一种可能(极端)解决方案:

我建议您通过文件解锁学习opc0de的源代码。

Quote

由于另一个应用程序正在使用文件,所以常常无法删除该文件。此工具允许您解锁该文件以便删除。

外观:

特性:

  • 解锁文件
  • 解锁和删除文件
  • 查看哪个进程使用该文件。
  • 终止使用该文件的进程

下载链接:

  • FileUnlock.rar
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10233161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档