On 04/19/2013 05:59 PM, Graeme Geldenhuys wrote:
> Hi,
> 
> I have a Firebird database living on a FreeBSD server. I did not specify
> a charset when the database was created.
> 
> I have a table with a string field defined as VarChar(10).
> 
> When I use SqlDB and retrieve the Size of that field via...
> 
>    FDataset.FieldDefs[AIndex].Size
> 
> SqlDB returns 10, which is correct.
> 
> But when that exact same code above is run via Zeos, it returns 40.
> 
> Anybody know why?
> 
> I'm using Zeos from the SubVersion repository:
> 
>    http://svn.code.sf.net/p/zeoslib/code-0/trunk
>    Revision: 2209
> 
> 
> The same result is returned using Zeos and a MySQL 5.5 database, where
> the field was also created as VarChar(10).
> 
> 
> Regards,
>   - Graeme -
> 

TFieldDef.Size is expressed in bytes. Zeos, IIRC, assumes a conversion
from any charset to utf8 could be made. Since UTF8 is up to 4 bytes per
char, a VarChar(10) can need up to 40 bytes to be represented in the
dataset. Don't forget that the translation to utf8 can happen in fe. the
client library (libmysql, fbclient,...).

Ludo


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

Reply via email to