Jelajahi Sumber

打开项目时,检验版本号

MaiXinRong 9 tahun lalu
induk
melakukan
ec00fadde7
3 mengubah file dengan 52 tambahan dan 40 penghapusan
  1. 49 39
      Units/Connections.pas
  2. 2 0
      Units/ProjectData.pas
  3. 1 1
      Units/UpdateDataBase.pas

+ 49 - 39
Units/Connections.pas

@@ -7,7 +7,7 @@ uses
 
 const
   ProductName = 'Measure';
-  FileVersion = '1.0.0.0';
+  FileVersion = '1.0.0.1';
   EncryptVersion = 'Auto1.0';
 
 type
@@ -50,7 +50,9 @@ type
     CreateExeVersion: string[20];
     // 最后一次打开 -- Exe版本号
     LastestExeVersion: string[20];
-    Reserve: array [0..1024 - 21 - 21] of Char;
+    // 历史最大 -- exe版本号
+    MaxExeVersion: string[20];
+    Reserve: array [0..1024 -21 -21 -21] of Char;
   end;
 
   TEncryptConnection = class(TCommonConnection)
@@ -68,7 +70,8 @@ type
     procedure ResetFileHead;
     function CheckFileEncrypt: Boolean; overload;
     function CheckFileEncrypt(AFileName: string): Boolean; overload;
-    function GetIsLastest: Boolean;
+    function GetNeedUpdate: Boolean;
+    function GetOverExe: Boolean;
   public
     destructor Destroy; override;
     procedure Open(const AFileName: string); override;
@@ -76,7 +79,8 @@ type
 
     procedure UpdateFileVersion;
 
-    property IsLastest: Boolean read GetIsLastest;
+    property NeedUpdate: Boolean read GetNeedUpdate;
+    property OverExe: Boolean read GetOverExe;
   end;
 
   procedure SimpleDecrypt(const ASourceFile, AResultFile: string);
@@ -343,6 +347,7 @@ begin
     FFileHead.FileVersion := FileVersion;
     FFileHead.CreateExeVersion := GetVersion;
     FFileHead.LastestExeVersion := GetVersion;
+    FFileHead.MaxExeVersion := GetVersion;
   end;
 end;
 
@@ -359,6 +364,46 @@ begin
   FFileHead.LastestExeVersion := GetVersion;
 end;
 
+procedure TEncryptConnection.UpdateFileVersion;
+begin
+  FFileHead.FileVersion := FileVersion;
+end;
+
+procedure TEncryptConnection.RecoverFileHead(AFileName: string);
+var
+  sTempFile: string;
+  FileStream: TFileStream;
+begin
+  sTempFile := ExtractFilePath(AFileName) + ExtractSimpleFileName(AFileName) + '.tmp';
+  CopyFile(PChar(AFileName), PChar(sTempFile), False);
+  try
+    if FileExists(sTempFile) then
+    begin
+      FileStream := TFileStream.Create(sTempFile, fmOpenWrite);
+      try
+        FileStream.Seek($00, soFromBeginning);
+        FileStream.Write(MDBOrgHead, SizeOf(MDBOrgHead));
+      finally
+        FileStream.Free;
+      end;
+      CopyFile(PChar(sTempFile), PChar(AFileName), False);
+      DeleteFile(PChar(sTempFile));
+    end;
+  except
+    DeleteFile(PChar(sTempFile));
+  end;
+end;
+
+function TEncryptConnection.GetNeedUpdate: Boolean;
+begin
+  Result := CompareCode(FileVersion, FFileHead.FileVersion, '.') > 0;
+end;
+
+function TEncryptConnection.GetOverExe: Boolean;
+begin
+  Result := CompareCode(FileVersion, FFileHead.FileVersion, '.') < 0;
+end;
+
 { TConnection }
 
 procedure TConnection.Close;
@@ -416,39 +461,4 @@ begin
   FConnection.Open;
 end;
 
-function TEncryptConnection.GetIsLastest: Boolean;
-begin
-  Result := CompareCode(CurrencyString, FFileHead.FileVersion, '.') > 0;
-end;
-
-procedure TEncryptConnection.UpdateFileVersion;
-begin
-  FFileHead.FileVersion := CurrencyString;
-end;
-
-procedure TEncryptConnection.RecoverFileHead(AFileName: string);
-var
-  sTempFile: string;
-  FileStream: TFileStream;
-begin
-  sTempFile := ExtractFilePath(AFileName) + ExtractSimpleFileName(AFileName) + '.tmp';
-  CopyFile(PChar(AFileName), PChar(sTempFile), False);
-  try
-    if FileExists(sTempFile) then
-    begin
-      FileStream := TFileStream.Create(sTempFile, fmOpenWrite);
-      try
-        FileStream.Seek($00, soFromBeginning);
-        FileStream.Write(MDBOrgHead, SizeOf(MDBOrgHead));
-      finally
-        FileStream.Free;
-      end;
-      CopyFile(PChar(sTempFile), PChar(AFileName), False);
-      DeleteFile(PChar(sTempFile));
-    end;
-  except
-    DeleteFile(PChar(sTempFile));
-  end;
-end;
-
 end.

+ 2 - 0
Units/ProjectData.pas

@@ -491,6 +491,8 @@ end;
 
 procedure TProjectData.UpdateProjectDataBase;
 begin
+  if TEncryptConnection(FConnection).OverExe then
+    WarningMessage('标段版本高于当前软件版本,可能会产生错误。');
   FUpdator.Update(FConnection);
 end;
 

+ 1 - 1
Units/UpdateDataBase.pas

@@ -55,7 +55,7 @@ end;
 
 procedure TUpdateDB.Update(AConnection: TEncryptConnection);
 begin
-  if not AConnection.IsLastest then
+  if AConnection.NeedUpdate then
   begin
     UpdateAllTables(AConnection.Connection);
     AConnection.UpdateFileVersion;