[fpc-devel] Val() behaviour in a function depends on LongStrings ON/OFF?

Bart bartjunk64 at gmail.com
Wed Oct 14 23:50:48 CEST 2026


On Wed, Oct 14, 2026 at 8:24 PM Bart <bartjunk64 at gmail.com> wrote:


> This is driving me crazy.
> Val('256', AByte, Code) should fail.

Same issue with Word, but not with DWord or QWord.

======================
C:\Users\Bart\LazarusProjecten\ConsoleProjecten>fpc test.pas -Mobjfpc -Sh
Free Pascal Compiler version 3.3.1 [2026/04/05] for i386
Copyright (c) 1993-2026 by Florian Klaempfl and others
Target OS: Win32 for i386

C:\Users\Bart\LazarusProjecten\ConsoleProjecten>test
Val(Byte)
RangeCheck ON
Err=3
RangeCheck OFF
Err=3

TryStrToByte_RangeCheck_ON
FAIL !! : ERangeError: Range check error
TryStrToByte_RangeCheck_OFF
FAIL !!  [0]
TryStrToByte_SS_RangeCheck_ON
NOT a Byte
TryStrToByte_SS_RangeCheck_OFF
NOT a Byte

--------------------------------------------------
Val(Word)
RangeCheck ON
Err=5
RangeCheck OFF
Err=5
TryStrToWord_RangeCheck_ON
FAIL !! : ERangeError: Range check error
TryStrToByte_RangeCheck_OFF
FAIL !!  [0]
TryStrToByte_SS_RangeCheck_ON
NOT a Word
TryStrToByte_SS_RangeCheck_OFF
NOT a Word

--------------------------------------------------
Val(DWord)
RangeCheck ON
Err=10
RangeCheck OFF
Err=10
TryStrToDWord_RangeCheck_ON
NOT a DWord
TryStrToDWord_RangeCheck_OFF
NOT a DWord
TryStrToDWord_SS_RangeCheck_ON
NOT a DWord
TryStrToDWord_SS_RangeCheck_OFF
NOT a DWord

--------------------------------------------------
Val(QWord)
RangeCheck ON
Err=11
RangeCheck OFF
Err=11
TryStrToQWord_RangeCheck_ON
NOT a QWord
TryStrQWord_RangeCheck_OFF
NOT a QWord
TryStrToQWord_SS_RangeCheck_ON
NOT a QWord
TryStrToQWord_SS_RangeCheck_OFF
NOT a QWord

ExceptionCount : 2
WrongValueCount: 2

======================================

C:\Users\Bart\LazarusProjecten\ConsoleProjecten>fpc test.pas -Mobjfpc
Free Pascal Compiler version 3.3.1 [2026/04/05] for i386
Copyright (c) 1993-2026 by Florian Klaempfl and others
Target OS: Win32 for i386

C:\Users\Bart\LazarusProjecten\ConsoleProjecten>test
Val(Byte)
RangeCheck ON
Err=3
RangeCheck OFF
Err=3

TryStrToByte_RangeCheck_ON
NOT a Byte
TryStrToByte_RangeCheck_OFF
NOT a Byte
TryStrToByte_SS_RangeCheck_ON
NOT a Byte
TryStrToByte_SS_RangeCheck_OFF
NOT a Byte

--------------------------------------------------
Val(Word)
RangeCheck ON
Err=5
RangeCheck OFF
Err=5
TryStrToWord_RangeCheck_ON
NOT a Word
TryStrToByte_RangeCheck_OFF
NOT a Word
TryStrToByte_SS_RangeCheck_ON
NOT a Word
TryStrToByte_SS_RangeCheck_OFF
NOT a Word

--------------------------------------------------
Val(DWord)
RangeCheck ON
Err=10
RangeCheck OFF
Err=10
TryStrToDWord_RangeCheck_ON
NOT a DWord
TryStrToDWord_RangeCheck_OFF
NOT a DWord
TryStrToDWord_SS_RangeCheck_ON
NOT a DWord
TryStrToDWord_SS_RangeCheck_OFF
NOT a DWord

--------------------------------------------------
Val(QWord)
RangeCheck ON
Err=11
RangeCheck OFF
Err=11
TryStrToQWord_RangeCheck_ON
NOT a QWord
TryStrQWord_RangeCheck_OFF
NOT a QWord
TryStrToQWord_SS_RangeCheck_ON
NOT a QWord
TryStrToQWord_SS_RangeCheck_OFF
NOT a QWord

-- 
Bart


More information about the fpc-devel mailing list