开发者

Delphi TTable.Exists fails on Paradox table even if database tables exist

开发者 https://www.devze.com 2023-03-10 06:38 出处:网络
When I create a table object (Table1) from scratch and assign the TableName property to an existing table on disk, the Table1.Exist function fails. I\'m using Delphi2010 and it is a Paradox 7 table.

When I create a table object (Table1) from scratch and assign the TableName property to an existing table on disk, the Table1.Exist function fails. I'm using Delphi2010 and it is a Paradox 7 table.

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

When I replace Table1.Exists with FileExists(Table1.TableName), this returns true. Does anyone have any explanantion for this?

Solution code

Followed suggestions, below is some 'correct' sample code:

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);

Note: Even setting Table1.Tablename to the full path and tablename while setting DatabaseName properly cause the Exists function to fail. TableName must be without the path, always.


You need to separately set the DatabaseName and FileName.

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

(You should really get away from the BDE and Paradox files (as well as TTable). The BDE has been deprecated for more than a decade now, and may not ship in future versions of Delphi. There are serious issues with the latest versions of Windows as well.)

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号