@@ -391,10 +391,10 @@ TLaterDBMetaFiles = class sealed(TDBMetaFiles)
391
391
end ;
392
392
393
393
// / <summary>Class that is present to represent unknown database meta file
394
- // / formats.</summary>
394
+ // / formats. Also used when database is not present. </summary>
395
395
// / <remarks>Accesses no files and returns null results for all methods
396
396
// / except IsVersionSupported.</remarks>
397
- TUnknownMetaFiles = class sealed(TDBMetaFiles)
397
+ TUnknownOrMissingMetaFiles = class sealed(TDBMetaFiles)
398
398
public
399
399
// / <summary>Returns the empty string.</summary>
400
400
// / <remarks>The file format is unknown, so the version file cannot be read
@@ -852,37 +852,37 @@ function TLaterDBMetaFiles.Version: string;
852
852
Result := StrTrim(ReadFileText(cVersionFile));
853
853
end ;
854
854
855
- { TUnknownMetaFiles }
855
+ { TUnknownOrMissingMetaFiles }
856
856
857
- function TUnknownMetaFiles .AreAllFilesPresent : Boolean;
857
+ function TUnknownOrMissingMetaFiles .AreAllFilesPresent : Boolean;
858
858
resourcestring
859
859
sNotSupportedError = ' Calling %s.AreAllFilesPresent is not supported for an '
860
- + ' unrecognised database format' ;
860
+ + ' unrecognised database format or missing database ' ;
861
861
begin
862
862
raise ENotSupportedException.CreateFmt(sNotSupportedError, [ClassName]);
863
863
end ;
864
864
865
- function TUnknownMetaFiles .Contributors : TStringDynArray;
865
+ function TUnknownOrMissingMetaFiles .Contributors : TStringDynArray;
866
866
begin
867
867
SetLength(Result, 0 );
868
868
end ;
869
869
870
- function TUnknownMetaFiles .LicenseInfo : TStringDynArray;
870
+ function TUnknownOrMissingMetaFiles .LicenseInfo : TStringDynArray;
871
871
begin
872
872
SetLength(Result, 0 );
873
873
end ;
874
874
875
- function TUnknownMetaFiles .LicenseText : string;
875
+ function TUnknownOrMissingMetaFiles .LicenseText : string;
876
876
begin
877
877
Result := ' ' ;
878
878
end ;
879
879
880
- function TUnknownMetaFiles .Testers : TStringDynArray;
880
+ function TUnknownOrMissingMetaFiles .Testers : TStringDynArray;
881
881
begin
882
882
SetLength(Result, 0 );
883
883
end ;
884
884
885
- function TUnknownMetaFiles .Version : string;
885
+ function TUnknownOrMissingMetaFiles .Version : string;
886
886
begin
887
887
Result := ' ' ;
888
888
end ;
@@ -891,16 +891,15 @@ function TUnknownMetaFiles.Version: string;
891
891
892
892
class function TDBMetaFilesFactory.GetInstance (const DBDir: string):
893
893
TDBMetaFiles;
894
- resourcestring
895
- sBadDirError = ' Database directory "%s" does not exist' ;
896
894
var
897
895
VersionFile: string;
898
896
VersionStr: string;
899
897
Version: TVersionNumber;
900
898
DBPath: string;
901
899
begin
902
900
if not TDirectory.Exists(ExcludeTrailingPathDelimiter(DBDir)) then
903
- raise EDBMetaData.CreateFmt(sBadDirError, [DBDir]);
901
+ // Database is not installed
902
+ Exit(TUnknownOrMissingMetaFiles.Create(DBDir));
904
903
905
904
DBPath := IncludeTrailingPathDelimiter(DBDir);
906
905
@@ -917,7 +916,7 @@ class function TDBMetaFilesFactory.GetInstance(const DBDir: string):
917
916
begin
918
917
VersionStr := TFileIO.ReadAllText(VersionFile, TEncoding.UTF8, True);
919
918
if not TVersionNumber.TryStrToVersionNumber(VersionStr, Version) then
920
- Result := TUnknownMetaFiles .Create(DBDir)
919
+ Result := TUnknownOrMissingMetaFiles .Create(DBDir)
921
920
else if Version.V1 = 2 then
922
921
Result := TV2DBMetaFiles.Create(DBDir)
923
922
else
@@ -929,7 +928,7 @@ class function TDBMetaFilesFactory.GetInstance(const DBDir: string):
929
928
and TFile.Exists(DBPath + TDBMetaFileNames.TestersV1, False) then
930
929
Result := TV1DBMetaFiles.Create(DBDir)
931
930
else
932
- Result := TUnknownMetaFiles .Create(DBDir);
931
+ Result := TUnknownOrMissingMetaFiles .Create(DBDir);
933
932
end ;
934
933
end ;
935
934
0 commit comments