@@ -0,0 +1,35 @@
+{ %OPT=-O3 }
+
+{$mode objfpc}
+program tval2;
+const
+ SResStr = 'Invalid2';
+function TryStrToInt(const s: string; out i: Longint): boolean; inline;
+var
+ Error : word;
+begin
+ Val(s, i, Error);
+ TryStrToInt:=(Error=0)
+end;
+procedure DoTest;
+ Output: Longint;
+ if TryStrToInt(SResStr, Output) then
+ Halt(1);
+ if not TryStrToInt(SResStr[8], Output) then
+ Halt(2);
+ if Output <> 2 then
+ Halt(3);
+ DoTest(); { This is so "Output" is a local variable rather than global }
+ WriteLn('ok');
+end.