@@ -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));
853853end ;
854854
855- { TUnknownMetaFiles }
855+ { TUnknownOrMissingMetaFiles }
856856
857- function TUnknownMetaFiles .AreAllFilesPresent : Boolean;
857+ function TUnknownOrMissingMetaFiles .AreAllFilesPresent : Boolean;
858858resourcestring
859859 sNotSupportedError = ' Calling %s.AreAllFilesPresent is not supported for an '
860- + ' unrecognised database format' ;
860+ + ' unrecognised database format or missing database ' ;
861861begin
862862 raise ENotSupportedException.CreateFmt(sNotSupportedError, [ClassName]);
863863end ;
864864
865- function TUnknownMetaFiles .Contributors : TStringDynArray;
865+ function TUnknownOrMissingMetaFiles .Contributors : TStringDynArray;
866866begin
867867 SetLength(Result, 0 );
868868end ;
869869
870- function TUnknownMetaFiles .LicenseInfo : TStringDynArray;
870+ function TUnknownOrMissingMetaFiles .LicenseInfo : TStringDynArray;
871871begin
872872 SetLength(Result, 0 );
873873end ;
874874
875- function TUnknownMetaFiles .LicenseText : string;
875+ function TUnknownOrMissingMetaFiles .LicenseText : string;
876876begin
877877 Result := ' ' ;
878878end ;
879879
880- function TUnknownMetaFiles .Testers : TStringDynArray;
880+ function TUnknownOrMissingMetaFiles .Testers : TStringDynArray;
881881begin
882882 SetLength(Result, 0 );
883883end ;
884884
885- function TUnknownMetaFiles .Version : string;
885+ function TUnknownOrMissingMetaFiles .Version : string;
886886begin
887887 Result := ' ' ;
888888end ;
@@ -891,16 +891,15 @@ function TUnknownMetaFiles.Version: string;
891891
892892class function TDBMetaFilesFactory.GetInstance (const DBDir: string):
893893 TDBMetaFiles;
894- resourcestring
895- sBadDirError = ' Database directory "%s" does not exist' ;
896894var
897895 VersionFile: string;
898896 VersionStr: string;
899897 Version: TVersionNumber;
900898 DBPath: string;
901899begin
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 ;
934933end ;
935934
0 commit comments