> > Or define an internal storage format and convert the 
> different types 
> > to that format. That is also what variants are doing. The 
> difference 
> > is that variants have pre-defined assignment routines and 
> conversions 
> > between the different variant types which don't always fit what you 
> > want (date formats, decimal points, precision, characters 
> set, etc.). 
> > Assign fe. 1.2 to a variant and it will store it as a 
> double while you 
> > perhaps meant a 32 digit precision numeric value.
> 
> I'm thinking to use JSON (TJSONData and subclasses) or at 
> least the same idea. Could you give an example to use a 
> internal storage format? Do you talk about Pointer and conversions?
> 

When you are thinking of using JSON you can use AnsiString as the internal
format eventually adding a datatype tag to avoid conversion data loss as
much as possible.
I have never used TJSONData before but used a homebrewn json implementation
to transfer arbitrary database data. 

> >> If Variant is so bad, why TParam is implemented using it?
> >>
> >
> > That is a very good question. Delphi compatibility is probably the 
> > answer.
> >
> > Just look at the VarFmtBCD custom variant format created to fit the 
> > higher precision numeric data types and all the 
> difficulties to get it 
> > right.
> >
> > Ludo
> 
> Well, TParams in Delphi works fine.
> My new class will works with DBMS data format (integer, 
> varchar, etc) very similar with TParams (I inherited of 
> TParams, at the moment) with more functionalities.
> 
> The TParams class, AFAIK, should work well with DBMS data 
> format, don't?
> 

Again, the higher precision numeric and decimal datatypes as used in fe.
Oracle are poorly supported with variants. If higher precision numerics,
date/time formats, decimal points and other locale related conversions
aren't an issue for you, and if you don't want strict compile time type
checking, please do use variants.

Ludo

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

Reply via email to