2

当我从头开始创建表对象 (Table1) 并将 TableName 属性分配给磁盘上的现有表时,Table1.Exist 函数失败。我正在使用 Delphi2010,它是一个 Paradox 7 表。

filename := ZipMaster1.DirEntry[i].FileName;
if Pos('.DB', UpperCase(filename)) > 0 then
begin
  Table1 := TTable.Create(FormArchiveFileSelector);
  Table1.TableName := IncludeTrailingPathDelimiter(ExtractDir) + ExtractFileName(filename);
  if Table1.Exists then
    Table1.DeleteTable;
  Table1.Free;
end;

当我用 替换Table1.ExistsFileExists(Table1.TableName),这将返回 true。有人对此有任何解释吗?

解决方案代码

遵循建议,以下是一些“正确”的示例代码:

filename := 'C:\Temp\tables\XXX_1.db';
Table1.DatabaseName := ExtractFilePath(filename);
Table1.Tablename := ExtractFileName(filename);
if Table1.Exists then MessageDlg('Exists', mtInformation, [mbOK], 0)
else MessageDlg('Missing', mtInformation, [mbOK], 0);

注意:即使Table1.Tablename在正确设置 DatabaseName 时设置为完整路径和表名也会导致 Exists 函数失败。TableName 必须始终没有路径。

4

1 回答 1

4

您需要分别设置 DatabaseName 和 FileName。

Table1 := TTable.Create(whatever);
Table1.DatabaseName := ExtractDir;
Table1.TableName := ExtractFileName(filename);

(你真的应该远离 BDE 和 Paradox 文件(以及 TTable)。BDE 已经被弃用十多年了,并且可能不会在未来的 Delphi 版本中提供。最新版本存在严重问题窗户也是。)

于 2011-06-01T23:04:20.370 回答