Procházet zdrojové kódy

Fix some ScriptFunc warnings, some by changing prototypes when its safe, or just by adding casts. Remaining warnings all (I think) need a NativeUInt first.

Martijn Laan před 1 měsícem
rodič
revize
4fc83a086f

+ 3 - 3
ISHelp/isxfunc.xml

@@ -1406,7 +1406,7 @@ end;
     <subcategory>
       <function>
         <name>SysErrorMessage</name>
-        <prototype>function SysErrorMessage(ErrorCode: Integer): String;</prototype>
+        <prototype>function SysErrorMessage(ErrorCode: Cardinal): String;</prototype>
         <description><p>Returns a localized error message string that corresponds to the given operating system error code.</p></description>
         <remarks><p>Refer to the <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381.aspx">system error codes on MSDN</a>.</p></remarks>
       </function>
@@ -2947,7 +2947,7 @@ end;</pre></example>
       </function>
       <function>
         <name>PageIndexFromID</name>
-        <prototype>function PageIndexFromID(const ID: Integer): Integer;</prototype>
+        <prototype>function PageIndexFromID(const ID: Integer): NativeInt;</prototype>
         <description><p>Given a page ID, returns an position index. Call this if, for example, you want to check whether a page is positioned before a certain other page.</p></description>
         <example><pre>function ShouldSkipPage(PageID: Integer): Boolean;
 begin
@@ -3363,7 +3363,7 @@ end;</pre></example>
     <subcategory>
       <function>
         <name>Sleep</name>
-        <prototype>procedure Sleep(const Milliseconds: LongInt);</prototype>
+        <prototype>procedure Sleep(const Milliseconds: Cardinal);</prototype>
         <description><p>Suspends the execution of Setup or Uninstall for a specified interval.</p></description>
       </function>
       <function>

+ 20 - 20
Projects/Src/Setup.ScriptFunc.pas

@@ -118,7 +118,7 @@ var
     end);
     RegisterScriptFunc('PageIndexFromID', sfNoUninstall, procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
-      Stack.SetInt(PStart, GetWizardForm.PageIndexFromID(Stack.GetInt(PStart-1)));
+      Stack.SetNativeInt(PStart, GetWizardForm.PageIndexFromID(Stack.GetInt(PStart-1)));
     end);
     RegisterScriptFunc('CreateCustomPage', sfNoUninstall, procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
@@ -1073,7 +1073,7 @@ var
           finally
             WindowDisabler.Free;
           end;
-          Stack.SetInt(PStart-6, ResultCode);
+          Stack.SetInt(PStart-6, Integer(ResultCode));
           if OrgName = 'ExecAndCaptureOutput' then begin
             { Set the three TExecOutput fields }
             Stack.SetArray(PStart-7, OutputReader.CaptureOutList, 0);
@@ -1107,7 +1107,7 @@ var
         finally
           WindowDisabler.Free;
         end;
-        Stack.SetInt(PStart-7, ErrorCode);
+        Stack.SetInt(PStart-7, Integer(ErrorCode));
       end else begin
         Stack.SetBool(PStart, False);
         Stack.SetInt(PStart-7, ERROR_ACCESS_DENIED);
@@ -1239,7 +1239,7 @@ var
         Suppressible := True;
         Default := Stack.GetInt(PStart-4);
       end;
-      Stack.SetInt(PStart, LoggedMsgBox(Stack.GetString(PStart-1), GetMsgBoxCaption, TMsgBoxType(Stack.GetInt(PStart-2)), Stack.GetInt(PStart-3), Suppressible, Default));
+      Stack.SetInt(PStart, LoggedMsgBox(Stack.GetString(PStart-1), GetMsgBoxCaption, TMsgBoxType(Stack.GetInt(PStart-2)), Cardinal(Stack.GetInt(PStart-3)), Suppressible, Default));
     end);
     RegisterScriptFunc(['TaskDialogMsgBox', 'SuppressibleTaskDialogMsgBox'], procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
@@ -1253,7 +1253,7 @@ var
         Default := Stack.GetInt(PStart-7);
       end;
       var ButtonLabels := Stack.GetStringArray(PStart-5);
-      Stack.SetInt(PStart, LoggedTaskDialogMsgBox('', Stack.GetString(PStart-1), Stack.GetString(PStart-2), GetMsgBoxCaption, TMsgBoxType(Stack.GetInt(PStart-3)), Stack.GetInt(PStart-4), ButtonLabels, Stack.GetInt(PStart-6), Suppressible, Default));
+      Stack.SetInt(PStart, LoggedTaskDialogMsgBox('', Stack.GetString(PStart-1), Stack.GetString(PStart-2), GetMsgBoxCaption, TMsgBoxType(Stack.GetInt(PStart-3)), Cardinal(Stack.GetInt(PStart-4)), ButtonLabels, Stack.GetInt(PStart-6), Suppressible, Default));
     end);
     RegisterScriptFunc('ISWIN64', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
@@ -1336,7 +1336,7 @@ var
       try
         var F := TFileRedir.Create(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), fdOpenExisting, faRead, fsReadWrite);
         try
-          Stack.SetInt(PStart-2, F.CappedSize);
+          Stack.SetInt(PStart-2, Integer(F.CappedSize)); { Even though CappedSize returns Cardinal, it's capped at High(Int32) }
           Stack.SetBool(PStart, True);
         finally
           F.Free;
@@ -1361,7 +1361,7 @@ var
     end);
     RegisterScriptFunc('SET8087CW', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
-      Set8087CW(Stack.GetInt(PStart));
+      Set8087CW(Word(Stack.GetInt(PStart)));
     end);
     RegisterScriptFunc('GET8087CW', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
@@ -1466,7 +1466,7 @@ var
     end);
     RegisterScriptFunc('SYSERRORMESSAGE', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
-      Stack.SetString(PStart, Win32ErrorString(Stack.GetInt(PStart-1)));
+      Stack.SetString(PStart, Win32ErrorString(Stack.GetUInt(PStart-1)));
     end);
   end;
 
@@ -1476,8 +1476,8 @@ var
     begin
       var VersionNumbers: TFileVersionNumbers;
       if GetVersionNumbersRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), VersionNumbers) then begin
-        Stack.SetInt(PStart-2, VersionNumbers.MS);
-        Stack.SetInt(PStart-3, VersionNumbers.LS);
+        Stack.SetUInt(PStart-2, VersionNumbers.MS);
+        Stack.SetUInt(PStart-3, VersionNumbers.LS);
         Stack.SetBool(PStart, True);
       end else
         Stack.SetBool(PStart, False);
@@ -1537,16 +1537,16 @@ var
     RegisterScriptFunc('UNPACKVERSIONNUMBERS', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
       var VersionNumbers: TFileVersionNumbers;
-      VersionNumbers.MS := UInt64(Stack.GetInt64(PStart)) shr 32;
-      VersionNumbers.LS := UInt64(Stack.GetInt64(PStart)) and $FFFFFFFF;
+      VersionNumbers.MS := UInt32(UInt64(Stack.GetInt64(PStart)) shr 32);
+      VersionNumbers.LS := UInt32(UInt64(Stack.GetInt64(PStart)) and $FFFFFFFF);
       Stack.SetUInt(PStart-1, VersionNumbers.MS);
       Stack.SetUInt(PStart-2, VersionNumbers.LS);
     end);
     RegisterScriptFunc('UNPACKVERSIONCOMPONENTS', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
       var VersionNumbers: TFileVersionNumbers;
-      VersionNumbers.MS := UInt64(Stack.GetInt64(PStart)) shr 32;
-      VersionNumbers.LS := UInt64(Stack.GetInt64(PStart)) and $FFFFFFFF;
+      VersionNumbers.MS := UInt32(UInt64(Stack.GetInt64(PStart)) shr 32);
+      VersionNumbers.LS := UInt32(UInt64(Stack.GetInt64(PStart)) and $FFFFFFFF);
       Stack.SetUInt(PStart-1, VersionNumbers.MS shr 16);
       Stack.SetUInt(PStart-2, VersionNumbers.MS and $FFFF);
       Stack.SetUInt(PStart-3, VersionNumbers.LS shr 16);
@@ -1555,8 +1555,8 @@ var
     RegisterScriptFunc('VERSIONTOSTR', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
       var VersionNumbers: TFileVersionNumbers;
-      VersionNumbers.MS := UInt64(Stack.GetInt64(PStart-1)) shr 32;
-      VersionNumbers.LS := UInt64(Stack.GetInt64(PStart-1)) and $FFFFFFFF;
+      VersionNumbers.MS := UInt32(UInt64(Stack.GetInt64(PStart-1)) shr 32);
+      VersionNumbers.LS := UInt32(UInt64(Stack.GetInt64(PStart-1)) and $FFFFFFFF);
       Stack.SetString(PStart, Format('%u.%u.%u.%u', [VersionNumbers.MS shr 16,
         VersionNumbers.MS and $FFFF, VersionNumbers.LS shr 16, VersionNumbers.LS and $FFFF]));
     end);
@@ -1578,7 +1578,7 @@ var
   begin
     RegisterScriptFunc('SLEEP', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
-      Sleep(Stack.GetInt(PStart));
+      Sleep(Stack.GetUInt(PStart));
     end);
     RegisterScriptFunc('FINDWINDOWBYCLASSNAME', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
@@ -1655,13 +1655,13 @@ var
     RegisterScriptFunc('OEMTOCHARBUFF', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
       var S := Stack.GetAnsiString(PStart);
-      OemToCharBuffA(PAnsiChar(S), PAnsiChar(S), Length(S));
+      OemToCharBuffA(PAnsiChar(S), PAnsiChar(S), ULength(S));
       Stack.SetAnsiString(PStart, S);
     end);
     RegisterScriptFunc('CHARTOOEMBUFF', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
       var S := Stack.GetAnsiString(PStart);
-      CharToOemBuffA(PAnsiChar(S), PAnsiChar(S), Length(S));
+      CharToOemBuffA(PAnsiChar(S), PAnsiChar(S), ULength(S));
       Stack.SetAnsiString(PStart, S);
     end);
   end;
@@ -1822,7 +1822,7 @@ var
     end);
     RegisterScriptFunc('SETPREVIOUSDATA', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin
-      Stack.SetBool(PStart, SetCodePreviousData(Stack.GetInt(PStart-1), Stack.GetString(PStart-2), Stack.GetString(PStart-3)));
+      Stack.SetBool(PStart, SetCodePreviousData(HKEY(UInt32(Stack.GetInt(PStart-1))), Stack.GetString(PStart-2), Stack.GetString(PStart-3)));
     end);
     RegisterScriptFunc('LOADSTRINGFROMFILE', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Integer)
     begin

+ 3 - 3
Projects/Src/Shared.ScriptFunc.pas

@@ -217,7 +217,7 @@ initialization
   ScriptFuncTables[sftScriptDlg] :=
   [
     'function PageFromID(const ID: Integer): TWizardPage;',
-    'function PageIndexFromID(const ID: Integer): Integer;',
+    'function PageIndexFromID(const ID: Integer): NativeInt;',
     'function CreateCustomPage(const AfterID: Integer; const ACaption, ADescription: String): TWizardPage;',
     'function CreateInputQueryPage(const AfterID: Integer; const ACaption, ADescription, ASubCaption: String): TInputQueryWizardPage;',
     'function CreateInputOptionPage(const AfterID: Integer; const ACaption, ADescription, ASubCaption: String; Exclusive, ListBox: Boolean): TInputOptionWizardPage;',
@@ -473,7 +473,7 @@ initialization
     'function SameStr(const S1, S2: String): Boolean;',
     'function SameText(const S1, S2: String): Boolean;',
     'function GetDateTimeString(const DateTimeFormat: String; const DateSeparator, TimeSeparator: Char): String;',
-    'function SysErrorMessage(ErrorCode: Integer): String;',
+    'function SysErrorMessage(ErrorCode: Cardinal): String;',
     { Actually NewExtractRelativePath, and not from SysUtils }
     'function ExtractRelativePath(const BaseName, DestName: String): String;'
   ];
@@ -496,7 +496,7 @@ initialization
 
   ScriptFuncTables[sftWindows] :=
   [
-    'procedure Sleep(const Milliseconds: LongInt);',
+    'procedure Sleep(const Milliseconds: Cardinal);',
     'function FindWindowByClassName(const ClassName: String): HWND;',
     'function FindWindowByWindowName(const WindowName: String): HWND;',
     'function SendMessage(const Wnd: HWND; const Msg, WParam, LParam: LongInt): LongInt;',