Lazarus
Home
Help
TinyPortal
Search
Login
Register
Lazarus
»
Forum
»
Free Pascal
»
General
(Moderators:
FPK
,
Tomas Hajny
) »
Can't wrap around
Free Pascal
Website
Downloads
Wiki
Documentation
Bugtracker
Mailing List
Lazarus
Website
Downloads (Laz+FPC)
Packages (OPM)
FAQ
Wiki
Documentation (RTL/FCL/LCL)
Bugtracker
CCR Bugs
GIT
Mailing List
Other languages
Foundation
Website
Useful Wiki Links
Project Roadmap
Getting the Source
Screenshots
How to use the forum
Forum Rules
About donations (wiki)
Bookstore
Computer Math and Games in Pascal
(preview)
Lazarus Handbook
Search
Advanced search
Recent
Application.QueueAsyncCal...
by
hedgehog
[
Today
at 07:04:11 pm]
International Pascal Cong...
by
Mike.Cornflake
[
Today
at 06:45:37 pm]
SpreadSheet Add Chart Lin...
by
eldonfsr
[
Today
at 06:19:33 pm]
TComboBoxEx & TCheckCombo...
by
pmralbuquerque
[
Today
at 06:13:25 pm]
How do 'with' statements ...
by
Thaddy
[
Today
at 05:48:50 pm]
P.I.S.S. a PlugIn-framewo...
by
cdbc
[
Today
at 05:35:18 pm]
How to view the TODO list...
by
dsiders
[
Today
at 04:32:18 pm]
How to access inherited m...
by
Thaddy
[
Today
at 04:12:38 pm]
Anubis activated
by
LemonParty
[
Today
at 03:46:01 pm]
RunFormula: math expressi...
by
LeP
[
Today
at 03:39:53 pm]
Setting canvas offset wit...
by
jamie
[
Today
at 03:14:04 pm]
Limiting Search in TSelec...
by
jamie
[
Today
at 03:09:21 pm]
using make with a differe...
by
Thausand
[
Today
at 02:41:39 pm]
FreeBSD 13/14: RTL dirent...
by
Fred vS
[
Today
at 02:33:11 pm]
Scripts to generate ofici...
by
Martin_fr
[
Today
at 02:02:56 pm]
Problems with form.AutoSc...
by
OH1KH
[
Today
at 12:07:44 pm]
AVRPascal – free code edi...
by
ackarwow
[
Today
at 09:23:14 am]
Can /my/ AI help me with ...
by
valdir.marcos
[
Today
at 08:34:18 am]
Laz program on ChromeOS?
by
Thaddy
[
Today
at 07:58:21 am]
Show Case: WritingTool
by
foldl2026
[
Today
at 07:54:04 am]
Gtk3 widgetset - call for...
by
dbannon
[
Today
at 03:23:51 am]
Is it timing of a dataset...
by
egsuh
[
Today
at 02:46:11 am]
FPC Git main: bug, which ...
by
AlexTP
[May 08, 2026, 07:32:53 pm]
Jerky animation (windows)
by
hedgehog
[May 08, 2026, 06:45:34 pm]
Various Variant Arrays
by
egsuh
[May 08, 2026, 06:16:24 pm]
« previous
next »
Print
Pages: [
1
]
Author
Topic: Can't wrap around (Read 436 times)
LemonParty
Sr. Member
Posts: 457
Can't wrap around
«
on:
May 02, 2026, 01:37:38 pm »
Hello.
I create this topic because of this problem
https://forum.lazarus.freepascal.org/index.php/topic,73945.msg581824.html#msg581824
.
I simplified the problem in this code:
Code: Pascal
[Select]
[+]
[-]
{$mode ObjFPC}{$H+}{$R-}
const
PRIME64_1
=
Uint64
(
11400714785074694791
)
;
PRIME64_2
=
Uint64
(
14029467366897019727
)
;
var
a
:
UInt64
;
begin
a
:
=
PRIME64_1
+
PRIME64_2
;
end
.
This code not compile with error:
Quote
(10,16) Error: Overflow in arithmetic operation
Desirable to have a wrap around of values PRIME64_1 and PRIME64_2 in this situation.
Checked in trunk and 3.0.4+dfsg-22 [2019/01/24] of FPC. In both gives an error. In Lazarus 4.4 this code compiles with no problem (at least topic starter say that).
Why it doesn't wrap around in pointed versions of compiler?
Logged
Lazarus v. 4.99. FPC v. 3.3.1. Windows 11
Lutz Mändle
Jr. Member
Posts: 88
Re: Can't wrap around
«
Reply #1 on:
May 02, 2026, 02:39:14 pm »
With FPC 3.2.2 on Linux 64bit it doesn't work either.
It gives the same error (Error: Overflow in arithmetic operation).
Logged
Thaddy
Hero Member
Posts: 19115
Glad to be alive.
Re: Can't wrap around
«
Reply #2 on:
May 02, 2026, 02:56:08 pm »
This is only the case when the consts are untyped, because of the internal representation of untyped consts as signed types.
But this works:
Code: Pascal
[Select]
[+]
[-]
{$mode ObjFPC}{$H+}
const
PRIME64_1
:
Uint64
=
11400714785074694791
;
PRIME64_2
:
Uint64
=
14029467366897019727
;
var
a
:
UInt64
;
begin
a
:
=
PRIME64_1
+
PRIME64_2
;
end
.
«
Last Edit: May 02, 2026, 03:08:51 pm by Thaddy
»
Logged
objects are fine constructs. You can even initialize them with constructors.
LemonParty
Sr. Member
Posts: 457
Re: Can't wrap around
«
Reply #3 on:
May 02, 2026, 04:06:16 pm »
Thank you for checking, Lutz Mändle.
Great Thaddy, I hope this will cure the problem.
Logged
Lazarus v. 4.99. FPC v. 3.3.1. Windows 11
Martin_fr
Administrator
Hero Member
Posts: 12335
Debugger - SynEdit - and more
Re: Can't wrap around
«
Reply #4 on:
May 02, 2026, 04:16:41 pm »
Thaddy's example might want a {$WriteableConst off}
Or as a workaround:
Code: Pascal
[Select]
[+]
[-]
{$mode ObjFPC}{$H+}{$R-}
const
PRIME64_1
=
Uint64
(
11400714785074694791
)
;
PRIME64_2
=
Uint64
(
14029467366897019727
)
;
var
a
:
UInt64
;
begin
a
:
=
qword
(
pointer
(
PRIME64_1
)
+
PRIME64_2
)
;
end
.
I don't know, it might be worth opening an issue on this.
As for the example {$R-} is range checking. What should have been there is overflow checking {$Q-}. But that doesn't help either.
Logged
Ide Tools, Code completion and more
/
IDE cool features
/
Debugger Status
LemonParty
Sr. Member
Posts: 457
Re: Can't wrap around
«
Reply #5 on:
May 03, 2026, 07:27:55 pm »
I can't for some reason create an issue on gitlab. Previously I was able to do that.
Can someone post this issue?
Logged
Lazarus v. 4.99. FPC v. 3.3.1. Windows 11
LemonParty
Sr. Member
Posts: 457
Re: Can't wrap around
«
Reply #6 on:
May 06, 2026, 01:56:28 pm »
I successfully created an issue in bugtracker.
Logged
Lazarus v. 4.99. FPC v. 3.3.1. Windows 11
Print
Pages: [
1
]
« previous
next »
Lazarus
»
Forum
»
Free Pascal
»
General
(Moderators:
FPK
,
Tomas Hajny
) »
Can't wrap around
TinyPortal
© 2005-2018