فهرست منبع

Cleanup for clarity, no actual changes.

Martijn Laan 4 سال پیش
والد
کامیت
c1df43ba82
4فایلهای تغییر یافته به همراه48 افزوده شده و 48 حذف شده
  1. 6 41
      Projects/Compile.pas
  2. 2 2
      Projects/ScriptFunc_R.pas
  3. 2 2
      Projects/SetupTypes.pas
  4. 38 3
      Projects/Verinfo.pas

+ 6 - 41
Projects/Compile.pas

@@ -3072,46 +3072,11 @@ begin
   end;
   end;
 end;
 end;
 
 
-function StrToVersionInfoVersionNumber(const S: String; var Version: TFileVersionNumbers): Boolean;
-
-  function SplitNextNumber(var Z: String): Word;
-  var
-    I, N: Integer;
-  begin
-    if Trim(Z) <> '' then begin
-      I := Pos('.', Z);
-      if I = 0 then
-        I := Length(Z)+1;
-      N := StrToInt(Trim(Copy(Z, 1, I-1)));
-      if (N < Low(Word)) or (N > High(Word)) then
-        Abort;
-      Result := N;
-      Z := Copy(Z, I+1, Maxint);
-    end else
-      Result := 0;
-  end;
-
-var
-  Z: String;
-  W: Word;
-begin
-  try
-    Z := S;
-    W := SplitNextNumber(Z);
-    Version.MS := (DWord(W) shl 16) or SplitNextNumber(Z);
-    W := SplitNextNumber(Z);
-    Version.LS := (DWord(W) shl 16) or SplitNextNumber(Z);
-    Result := True;
-  except
-    Result := False;
-  end;
-end;
-
 procedure TSetupCompiler.ProcessMinVersionParameter(const ParamValue: TParamValue;
 procedure TSetupCompiler.ProcessMinVersionParameter(const ParamValue: TParamValue;
   var AMinVersion: TSetupVersionData);
   var AMinVersion: TSetupVersionData);
 begin
 begin
   if ParamValue.Found then
   if ParamValue.Found then
-    if not StrToVersionNumbers(ParamValue.Data, AMinVersion) then
+    if not StrToSetupVersionData(ParamValue.Data, AMinVersion) then
       AbortCompileParamError(SCompilerParamInvalid2, ParamCommonMinVersion);
       AbortCompileParamError(SCompilerParamInvalid2, ParamCommonMinVersion);
 end;
 end;
 
 
@@ -3119,7 +3084,7 @@ procedure TSetupCompiler.ProcessOnlyBelowVersionParameter(const ParamValue: TPar
   var AOnlyBelowVersion: TSetupVersionData);
   var AOnlyBelowVersion: TSetupVersionData);
 begin
 begin
   if ParamValue.Found then
   if ParamValue.Found then
-    if not StrToVersionNumbers(ParamValue.Data, AOnlyBelowVersion) then
+    if not StrToSetupVersionData(ParamValue.Data, AOnlyBelowVersion) then
       AbortCompileParamError(SCompilerParamInvalid2, ParamCommonOnlyBelowVersion);
       AbortCompileParamError(SCompilerParamInvalid2, ParamCommonOnlyBelowVersion);
 end;
 end;
 
 
@@ -3947,7 +3912,7 @@ begin
         AbortCompileOnLine(SCompilerMessagesFileObsolete);
         AbortCompileOnLine(SCompilerMessagesFileObsolete);
       end;
       end;
     ssMinVersion: begin
     ssMinVersion: begin
-        if not StrToVersionNumbers(Value, SetupHeader.MinVersion) then
+        if not StrToSetupVersionData(Value, SetupHeader.MinVersion) then
           Invalid;
           Invalid;
         if SetupHeader.MinVersion.WinVersion <> 0 then
         if SetupHeader.MinVersion.WinVersion <> 0 then
           AbortCompileOnLine(SCompilerMinVersionWinMustBeZero);
           AbortCompileOnLine(SCompilerMinVersionWinMustBeZero);
@@ -3958,7 +3923,7 @@ begin
         MissingRunOnceIdsWarning := StrToBool(Value);
         MissingRunOnceIdsWarning := StrToBool(Value);
       end;
       end;
     ssOnlyBelowVersion: begin
     ssOnlyBelowVersion: begin
-        if not StrToVersionNumbers(Value, SetupHeader.OnlyBelowVersion) then
+        if not StrToSetupVersionData(Value, SetupHeader.OnlyBelowVersion) then
           Invalid;
           Invalid;
       end;
       end;
     ssOutput: begin
     ssOutput: begin
@@ -4207,7 +4172,7 @@ begin
       end;
       end;
     ssVersionInfoProductVersion: begin
     ssVersionInfoProductVersion: begin
         VersionInfoProductVersionOriginalValue := Value;
         VersionInfoProductVersionOriginalValue := Value;
-        if not StrToVersionInfoVersionNumber(Value, VersionInfoProductVersion) then
+        if not StrToVersionNumbers(Value, VersionInfoProductVersion) then
           Invalid;
           Invalid;
       end;
       end;
     ssVersionInfoProductTextVersion: begin
     ssVersionInfoProductTextVersion: begin
@@ -4218,7 +4183,7 @@ begin
       end;
       end;
     ssVersionInfoVersion: begin
     ssVersionInfoVersion: begin
         VersionInfoVersionOriginalValue := Value;
         VersionInfoVersionOriginalValue := Value;
-        if not StrToVersionInfoVersionNumber(Value, VersionInfoVersion) then
+        if not StrToVersionNumbers(Value, VersionInfoVersion) then
           Invalid;
           Invalid;
       end;
       end;
     ssWindowResizable: begin
     ssWindowResizable: begin

+ 2 - 2
Projects/ScriptFunc_R.pas

@@ -1061,9 +1061,9 @@ begin
   end else if Proc.Name = 'GETSHELLFOLDERBYCSIDL' then begin
   end else if Proc.Name = 'GETSHELLFOLDERBYCSIDL' then begin
     Stack.SetString(PStart, GetShellFolderByCSIDL(Stack.GetInt(PStart-1), Stack.GetBool(PStart-2)));
     Stack.SetString(PStart, GetShellFolderByCSIDL(Stack.GetInt(PStart-1), Stack.GetBool(PStart-2)));
   end else if Proc.Name = 'INSTALLONTHISVERSION' then begin
   end else if Proc.Name = 'INSTALLONTHISVERSION' then begin
-    if not StrToVersionNumbers(Stack.GetString(PStart-1), MinVersion) then
+    if not StrToSetupVersionData(Stack.GetString(PStart-1), MinVersion) then
       InternalError('InstallOnThisVersion: Invalid MinVersion string')
       InternalError('InstallOnThisVersion: Invalid MinVersion string')
-    else if not StrToVersionNumbers(Stack.GetString(PStart-2), OnlyBelowVersion) then
+    else if not StrToSetupVersionData(Stack.GetString(PStart-2), OnlyBelowVersion) then
       InternalError('InstallOnThisVersion: Invalid OnlyBelowVersion string')
       InternalError('InstallOnThisVersion: Invalid OnlyBelowVersion string')
     else
     else
       Stack.SetBool(PStart, (InstallOnThisVersion(MinVersion, OnlyBelowVersion) = irInstall));
       Stack.SetBool(PStart, (InstallOnThisVersion(MinVersion, OnlyBelowVersion) = irInstall));

+ 2 - 2
Projects/SetupTypes.pas

@@ -57,7 +57,7 @@ const
 
 
 function StringsToCommaString(const Strings: TStrings): String;
 function StringsToCommaString(const Strings: TStrings): String;
 procedure SetStringsFromCommaString(const Strings: TStrings; const Value: String);
 procedure SetStringsFromCommaString(const Strings: TStrings; const Value: String);
-function StrToVersionNumbers(const S: String; var VerData: TSetupVersionData): Boolean;
+function StrToSetupVersionData(const S: String; var VerData: TSetupVersionData): Boolean;
 procedure HandleRenamedConstants(var Cnst: String; const RenamedConstantCallback: TRenamedConstantCallback);
 procedure HandleRenamedConstants(var Cnst: String; const RenamedConstantCallback: TRenamedConstantCallback);
 
 
 implementation
 implementation
@@ -193,7 +193,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-function StrToVersionNumbers(const S: String; var VerData: TSetupVersionData): Boolean;
+function StrToSetupVersionData(const S: String; var VerData: TSetupVersionData): Boolean;
 
 
   procedure Split(const Str: String; var Ver: TSetupVersionDataVersion;
   procedure Split(const Str: String; var Ver: TSetupVersionDataVersion;
     var ServicePack: Word);
     var ServicePack: Word);

+ 38 - 3
Projects/Verinfo.pas

@@ -2,13 +2,11 @@ unit VerInfo;
 
 
 {
 {
   Inno Setup
   Inno Setup
-  Copyright (C) 1997-2007 Jordan Russell
+  Copyright (C) 1997-2020 Jordan Russell
   Portions by Martijn Laan
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
   For conditions of distribution and use, see LICENSE.TXT.
 
 
   Version info functions
   Version info functions
-
-  $jrsoftware: issrc/Projects/VerInfo.pas,v 1.10 2007/02/03 20:06:44 jr Exp $
 }
 }
 
 
 interface
 interface
@@ -27,6 +25,8 @@ function GetVersionInfo(const Filename: String;
   var VersionInfo: TVSFixedFileInfo): Boolean;
   var VersionInfo: TVSFixedFileInfo): Boolean;
 function GetVersionNumbers(const Filename: String;
 function GetVersionNumbers(const Filename: String;
   var VersionNumbers: TFileVersionNumbers): Boolean;
   var VersionNumbers: TFileVersionNumbers): Boolean;
+function StrToVersionNumbers(const S: String;
+  var Version: TFileVersionNumbers): Boolean;
 
 
 implementation
 implementation
 
 
@@ -212,4 +212,39 @@ begin
   end;
   end;
 end;
 end;
 
 
+function StrToVersionNumbers(const S: String; var Version: TFileVersionNumbers): Boolean;
+
+  function SplitNextNumber(var Z: String): Word;
+  var
+    I, N: Integer;
+  begin
+    if Trim(Z) <> '' then begin
+      I := Pos('.', Z);
+      if I = 0 then
+        I := Length(Z)+1;
+      N := StrToInt(Trim(Copy(Z, 1, I-1)));
+      if (N < Low(Word)) or (N > High(Word)) then
+        Abort;
+      Result := N;
+      Z := Copy(Z, I+1, Maxint);
+    end else
+      Result := 0;
+  end;
+
+var
+  Z: String;
+  W: Word;
+begin
+  try
+    Z := S;
+    W := SplitNextNumber(Z);
+    Version.MS := (DWord(W) shl 16) or SplitNextNumber(Z);
+    W := SplitNextNumber(Z);
+    Version.LS := (DWord(W) shl 16) or SplitNextNumber(Z);
+    Result := True;
+  except
+    Result := False;
+  end;
+end;
+
 end.
 end.