On 2021/03/08 16:54, Michael Van Canneyt via fpc-pascal wrote:
On Mon, 8 Mar 2021, Toru Takubo via fpc-pascal wrote:
Hi,
I am developing my app on Windows and building apps for other
platforms by using cross compiler. Now I have a problem only
occurred on Linux ARM.
The problem is that it cannot write datetime field on sqlite3
database. It can read/write other fields like int, varchar
or blob, but always write zero in datetime (maybe float as well)
field.
Does anyone have an idea about this issue? I am not sure it is
fpc issue, but better to report bug?
It sounds like a floating point problem. As you probably know, a
TDateTime
type is actually a double type. Did you try with a float value ?
The DB explorer tools probably just use strings to read/write from the
database, so they will not be bothere by such things, but FPC stores
dataset
values in 'native' formats in memory.
I don't know what to advise to further investigate the issue, One
thing to
try would be to test whether normal float arithmetic or date
arithmetic works.
If not, then the compiler people will need to give more advice.
I created a simple test code, and ran on linux-i386 and linux-arm.
Test on linux-i386 is OK but on linux-arm, I got unexpected values
"30-12-99" as datetime and "2.12199579096527E-314" as float, which are
different
from values previously set. (except INT and VARCHAR fields)
---linux-i386--------------------------------------------
INT, VARCHAR, DATETIME, DOUBLE
0, 9-3-21 08:50:23, 9-3-21 08:50:23, 0
1, 9-3-21 12:16:06, 9-3-21 12:16:06, 0.142857142857143
2, 9-3-21 15:41:49, 9-3-21 15:41:49, 0.285714285714286
3, 9-3-21 19:07:32, 9-3-21 19:07:32, 0.428571428571429
4, 9-3-21 22:33:15, 9-3-21 22:33:15, 0.571428571428571
5, 10-3-21 01:58:58, 10-3-21 01:58:58, 0.714285714285714
6, 10-3-21 05:24:40, 10-3-21 05:24:40, 0.857142857142857
7, 10-3-21 08:50:23, 10-3-21 08:50:23, 1
8, 10-3-21 12:16:06, 10-3-21 12:16:06, 1.14285714285714
9, 10-3-21 15:41:49, 10-3-21 15:41:49, 1.28571428571429
---linux-arm---------------------------------------------
INT, VARCHAR, DATETIME, DOUBLE
0, 9-3-21 08:55:53, 30-12-99, 2.12199579096527E-314
1, 9-3-21 12:21:36, 30-12-99, 2.12199579096527E-314
2, 9-3-21 15:47:18, 30-12-99, 2.12199579096527E-314
3, 9-3-21 19:13:01, 30-12-99, 2.12199579096527E-314
4, 9-3-21 22:38:44, 30-12-99, 2.12199579096527E-314
5, 10-3-21 02:04:27, 30-12-99, 2.12199579096527E-314
6, 10-3-21 05:30:10, 30-12-99, 2.12199579096527E-314
7, 10-3-21 08:55:53, 30-12-99, 2.12199579096527E-314
8, 10-3-21 12:21:36, 30-12-99, 2.12199579096527E-314
9, 10-3-21 15:47:19, 30-12-99, 2.12199579096527E-314
I used a shared library libsqlite3.so included in the "DB Browser for
SQLite",
so it should work. What can cause such a problem only in the specific
field
on the specific platform?
Thank you in advance for any advice.
Toru
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal