Skip to content

Commit b822098

Browse files
author
delphidabbler
committed
Fix error in meta data code that was raising exception when main database not installed
This caused About Box display to be corrupted
1 parent 7c3a503 commit b822098

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

Src/DB.UMetaData.pas

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -391,10 +391,10 @@ TLaterDBMetaFiles = class sealed(TDBMetaFiles)
391391
end;
392392

393393
/// <summary>Class that is present to represent unknown database meta file
394-
/// formats.</summary>
394+
/// formats. Also used when database is not present.</summary>
395395
/// <remarks>Accesses no files and returns null results for all methods
396396
/// except IsVersionSupported.</remarks>
397-
TUnknownMetaFiles = class sealed(TDBMetaFiles)
397+
TUnknownOrMissingMetaFiles = class sealed(TDBMetaFiles)
398398
public
399399
/// <summary>Returns the empty string.</summary>
400400
/// <remarks>The file format is unknown, so the version file cannot be read
@@ -852,37 +852,37 @@ function TLaterDBMetaFiles.Version: string;
852852
Result := StrTrim(ReadFileText(cVersionFile));
853853
end;
854854

855-
{ TUnknownMetaFiles }
855+
{ TUnknownOrMissingMetaFiles }
856856

857-
function TUnknownMetaFiles.AreAllFilesPresent: Boolean;
857+
function TUnknownOrMissingMetaFiles.AreAllFilesPresent: Boolean;
858858
resourcestring
859859
sNotSupportedError = 'Calling %s.AreAllFilesPresent is not supported for an '
860-
+ 'unrecognised database format';
860+
+ 'unrecognised database format or missing database';
861861
begin
862862
raise ENotSupportedException.CreateFmt(sNotSupportedError, [ClassName]);
863863
end;
864864

865-
function TUnknownMetaFiles.Contributors: TStringDynArray;
865+
function TUnknownOrMissingMetaFiles.Contributors: TStringDynArray;
866866
begin
867867
SetLength(Result, 0);
868868
end;
869869

870-
function TUnknownMetaFiles.LicenseInfo: TStringDynArray;
870+
function TUnknownOrMissingMetaFiles.LicenseInfo: TStringDynArray;
871871
begin
872872
SetLength(Result, 0);
873873
end;
874874

875-
function TUnknownMetaFiles.LicenseText: string;
875+
function TUnknownOrMissingMetaFiles.LicenseText: string;
876876
begin
877877
Result := '';
878878
end;
879879

880-
function TUnknownMetaFiles.Testers: TStringDynArray;
880+
function TUnknownOrMissingMetaFiles.Testers: TStringDynArray;
881881
begin
882882
SetLength(Result, 0);
883883
end;
884884

885-
function TUnknownMetaFiles.Version: string;
885+
function TUnknownOrMissingMetaFiles.Version: string;
886886
begin
887887
Result := '';
888888
end;
@@ -891,16 +891,15 @@ function TUnknownMetaFiles.Version: string;
891891

892892
class function TDBMetaFilesFactory.GetInstance(const DBDir: string):
893893
TDBMetaFiles;
894-
resourcestring
895-
sBadDirError = 'Database directory "%s" does not exist';
896894
var
897895
VersionFile: string;
898896
VersionStr: string;
899897
Version: TVersionNumber;
900898
DBPath: string;
901899
begin
902900
if not TDirectory.Exists(ExcludeTrailingPathDelimiter(DBDir)) then
903-
raise EDBMetaData.CreateFmt(sBadDirError, [DBDir]);
901+
// Database is not installed
902+
Exit(TUnknownOrMissingMetaFiles.Create(DBDir));
904903

905904
DBPath := IncludeTrailingPathDelimiter(DBDir);
906905

@@ -917,7 +916,7 @@ class function TDBMetaFilesFactory.GetInstance(const DBDir: string):
917916
begin
918917
VersionStr := TFileIO.ReadAllText(VersionFile, TEncoding.UTF8, True);
919918
if not TVersionNumber.TryStrToVersionNumber(VersionStr, Version) then
920-
Result := TUnknownMetaFiles.Create(DBDir)
919+
Result := TUnknownOrMissingMetaFiles.Create(DBDir)
921920
else if Version.V1 = 2 then
922921
Result := TV2DBMetaFiles.Create(DBDir)
923922
else
@@ -929,7 +928,7 @@ class function TDBMetaFilesFactory.GetInstance(const DBDir: string):
929928
and TFile.Exists(DBPath + TDBMetaFileNames.TestersV1, False) then
930929
Result := TV1DBMetaFiles.Create(DBDir)
931930
else
932-
Result := TUnknownMetaFiles.Create(DBDir);
931+
Result := TUnknownOrMissingMetaFiles.Create(DBDir);
933932
end;
934933
end;
935934

0 commit comments

Comments
 (0)