Hi! I'm using a pi as a monitor for some process, so I'm trying to get SDL2 and a working postgres interface on it.
However I'm running into trouble on timestamps fields on the pi. I wrote a console program on Win7, using 32-bit compiler bundled with Lazarus 1.6. (I think is is fpc 3.0.0) and that platform can connect to the db, and run the program. C:\pascal\pg_test_float>test_float.exe A: 1 B: 1.0000000000000000E+000 C: 4.2457016203831023E+004 round(B): 1 round(C): 42457 The same program on the pi crashes. pi@raspberrypi ~ $ fpc -v Free Pascal Compiler version 2.6.0-9+rpi1+wsf1 [2015/04/28] for arm Copyright (c) 1993-2011 by Florian Klaempfl and others pi@raspberrypi ~ $ uname -a Linux raspberrypi 4.1.7+ #817 PREEMPT Sat Sep 19 15:25:36 BST 2015 armv6l GNU/Linux pi@raspberrypi ~/svn/bnlbot/botstart/bot-1-0/source/pascal $ ./test_float An unhandled exception occurred at $000302D4 : EDatabaseError : : Unknown fieldtype for parameter "DT". $000302D4 $0001C4D0 $00020DE8 $00008760 pi@raspberrypi ~/svn/bnlbot/botstart/bot-1-0/source/pascal $ addr2line -e test_float 000302D4 0001C4D0 00020DE8 00008760 /home/pi/svn/bnlbot/botstart/bot-1-0/source/pascal/test_float.lpr:85 /home/pi/svn/bnlbot/botstart/bot-1-0/source/pascal/test_float.lpr:85 /home/pi/svn/bnlbot/botstart/bot-1-0/source/pascal/test_float.lpr:85 /home/pi/svn/bnlbot/botstart/bot-1-0/source/pascal/test_float.lpr:57 where line 57 is market <---- here in code below ie. Q2.Params.ParamByName('DT').Value := now; program test_float; uses pqconnection,sqldb,sysutils,db; function CreateConnection: TPQConnection; begin result := TPQConnection.Create(nil); result.Hostname := 'db.somewhwew.com'; result.DatabaseName := 'asd'; result.UserName := 'asd'; result.Password := 'pwd'; end; function CreateTransaction(pConnection: TPQConnection): TSQLTransaction; begin result := TSQLTransaction.Create(pConnection); result.Database := pConnection; end; function CreateQuery(pTransaction: TSQLTransaction): TSQLQuery; begin result := TSQLQuery.Create(pTransaction.Database); result.Database := pTransaction.Database; result.Transaction := pTransaction end; var PQConn : TPQConnection; T : TSQLTransaction; Q1, Q2, Q3 : TSQLQuery; A : LongInt; B : Double; C : TDateTime; sSql : String; begin PQConn := CreateConnection ; PQConn.Open; T := CreateTransaction(PQConn); T.StartTransaction; Q1 := CreateQuery(T) ; sSql := 'create table TEST ( '; sSql += 'A integer not null primary key, '; sSql += 'B numeric(8,3) not null , '; sSql += 'C timestamp(3) without time zone not null ) '; Q1.SQL.Text := sSql; Q1.ExecSql; Q2 := CreateQuery(T) ; sSql := 'insert into TEST values (1, 1.0, :DT)'; Q2.SQL.Text := sSql; Q2.Prepare; //Q2.Params.ParamByName('DT').DataType := ftDateTime; Q2.Params.ParamByName('DT').Value := now; <----Here Q2.ExecSql; Q3 := CreateQuery(T) ; sSql := 'select * from TEST order by A'; Q3.SQL.Text := sSql; Q3.Open; if not Q3.Eof then begin A := Q3.FieldByName('A').AsLongint; B := Q3.FieldByName('B').AsFloat; C := Q3.FieldByName('C').AsDateTime; Writeln('A: ', A); Writeln('B: ', B); Writeln('C: ', C); Writeln('round(B): ', round(B)); Writeln('round(C): ', round(C)); end else writeln('Eos'); Q3.Close; T.Rollback; Q1.Free; Q2.Free; Q3.Free; T.Free; PQConn.Close; end. Ideas ? -- Björn _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal