No, map to ftfmtbcd, as it should. That will work fine as long as the
values are within the sqlite-range.
ok. in reading phase no problem
(ATM we read using sqlite3_column_text (so SQLite converts all storage classes (integer,real, blob) to string) and then converting to TBCD ... ok

(Well, show me the bug: as it is now, he won't get an exception? Just
map to ftmbcd)
yes now no exception it is ok as is

 the user will only get an invalid value when he stores a
value outside the sqlite-precision scope. Exactly what he would expect
when he uses sqlite.
Yes.
I can live with this, but do not forget, that ATM there is not implemented writting of ftFmtBCD parameters in Procedure TSQLite3Cursor.bindparams(AParams : TParams);
So writting never occurs!

So there we must add at least ftFmtBCD case, (behind ftbcd)

But If we add this code (excuse me, I must offer it) ;-):
//it is only pseudo code
ftFmtBCD:
begin
 if P.AsFMTBCD.Precision > 15 then //we are out-of-range
 begin
   str1:=BCDTOStr(P.AsFMTBCD, SQLFormatSettings);
checkerror(sqlite3_bind_blob(fstatement,I,pcharstr(str1), length(str1),@freebindstring));
 end
 else
 begin
   do1:=P.AsFloat;
   checkerror(sqlite3_bind_double(fstatement,I,do1));
 end;
end;
// all.
Then all cases will be covered and no additional work around are needed.

Laco.
P.S.: P.AsFMTBCD: http://bugs.freepascal.org/view.php?id=18809

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to