【发布时间】:2011-06-01 22:58:18
【问题描述】:
当我从头开始创建表对象 (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.Exists 替换为FileExists(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);
注意:即使在正确设置 DatabaseName 时将 Table1.Tablename 设置为完整路径和表名,也会导致 Exists 函数失败。 TableName 必须没有路径,始终。
【问题讨论】:
-
我们的产品是一个大型(>100 万行代码),设计糟糕的系统 >10 年了。有限的 nr 开发人员(即预算) - 你懂的!
标签: delphi delphi-2010 paradox