Hi,
Is it safe to do the following?
var
W: Word;
U: UInt64;
{$R-} //range checkin off
begin
U := $0000000100000000;
W := U; // or W := Word(U);
end.I know that the value that i assigned to W is "wrong" (and I can handle that), but does it trash memory or cause other serious problems?
Context: I have to deal with string input of arbitrary length (only digits) that I have to convert to a Value of type Word. For this I use Val().
Val('$0000000100000000', W, Err) gives W = 0; Err = 0 (indicating
there was no error);I do not want to use rangechecking and then a try .. except (this would slow down code dramatically).
So I thought I might use Val('$0000000100000000', U, Err) (U being of type UInt64)
This has the advantage that any string which represents a value > High(QWord) wil set Err to > 0.
After that I would have to assign the value in U to W (after a check that the value in U is not "invalid" in the context of my code).
Bart
