Difference between revisions of "Talk:Val"

From Lazarus wiki
Jump to navigationJump to search
(reply)
Line 21: Line 21:
 
See {{MantisLink|0015633}}<br>--[[User:Bart|Bart]] ([[User talk:Bart|talk]]) 18:06, 20 March 2019 (CET)
 
See {{MantisLink|0015633}}<br>--[[User:Bart|Bart]] ([[User talk:Bart|talk]]) 18:06, 20 March 2019 (CET)
 
: Yeah, acknowledged, but the sentence states, that the procedure ''itself'' does not trigger RTEs or exceptions. Of course you can insert, you can instruct the code generator to insert range checks, but that's not part of <syntaxhighlight lang="pascal" enclose="none">val</syntaxhighlight>'s implementation, is it? [[User:Kai Burghardt|Kai Burghardt]] ([[User talk:Kai Burghardt|talk]]) 18:18, 20 March 2019 (CET)
 
: Yeah, acknowledged, but the sentence states, that the procedure ''itself'' does not trigger RTEs or exceptions. Of course you can insert, you can instruct the code generator to insert range checks, but that's not part of <syntaxhighlight lang="pascal" enclose="none">val</syntaxhighlight>'s implementation, is it? [[User:Kai Burghardt|Kai Burghardt]] ([[User talk:Kai Burghardt|talk]]) 18:18, 20 March 2019 (CET)
 +
::That's a bit weird reasoning. Accessing an array with an index out of bounds also does not by itself trigger a RTE or exception. It's an error nevertheless, which is revealed if you do range checking.

Revision as of 22:03, 20 March 2019

RTE and exceptions

"The procedure val is so useful, since it does not trigger run-time errors or exceptions."

var
  W: Word;
  Code: Integer;
begin
  {$R+}
  W := 1234;
  Val('65536',W,Code);
  writeln('Code: ',Code);
  writeln('W: ',W);
end.

Build and run:

An unhandled exception occurred at $004016E5:
ERangeError: Range check error
  $004016E5

See Issue #0015633
--Bart (talk) 18:06, 20 March 2019 (CET)

Yeah, acknowledged, but the sentence states, that the procedure itself does not trigger RTEs or exceptions. Of course you can insert, you can instruct the code generator to insert range checks, but that's not part of val's implementation, is it? Kai Burghardt (talk) 18:18, 20 March 2019 (CET)
That's a bit weird reasoning. Accessing an array with an index out of bounds also does not by itself trigger a RTE or exception. It's an error nevertheless, which is revealed if you do range checking.