Re: dbcoltype() , char and nchar

LacaK <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <[email protected]>
>> Only for explanation:
>> In FreePascal there are different Database Field Types
>> TStringField and TWideStringField, so my attempt was map
>> char, varchar to TStringField
>> nchar, nvarchar to TWideStringField (see 
>> http://docwiki.embarcadero.com/VCL/en/DB.TWideStringField )
>> (text to TMemoField, ntext to TWideMemoField)
>>     
>
> I understand what you want to do. 
Fine ;-) Thanks (I am not native speaker, so sometimes I have problems 
explain what I want)

>  Unfortunately it will be quite
> difficult with db-lib, because FreeTDS intentionally conceals the server
> column definition.  It was a design decision -- maybe not the right one!
> -- but it's very deep in the library.  
>
> As soon as UCS-2 data arrive from the server, they are immediately
> converted to the client's encoding.  The UCS-2 form is discarded.[1]  To
> provide UCS-2 data to FreePascall, you'll have to re-convert!  
>   
Yes, I can re-convert easy (UTF8 -> WideString), but as I wrote I must 
know original server's column type
When speaking about client encodings, there are supported: ISO-8859-1, 
UTF8, UCS2, arn't ?
Is there possibility obtain character data in current system Ansi 
(non-unicode) charset ?
(here I am speaking about Windows environment, I do not know nothing 
about other OS). In Windows there is for example 
WideCharToMultiByte(CP_ACP, ...)

> Getting db-lib to report the server's type and size wouldn't be
> particularly hard.  The TDSCOLUMN structure has a nested on_server
> structure with exactly that information.  That structure could be
> harmlessly added to the DBCOL structure filled by dbcolinfo().  I think if
> you look at dbcolinfo() and dbcoltype(), you'll see what to do.  Look at
> tds_set_column_type() too.  
>   
Thanks. I understand, and I can do it for my own needs, but as I wrote, 
my FreePascal component will link to dblib.dll.
And I do not want provide specialized/modified/customized version of 
dblib.dll (so everybody can use=download and compile FreeTDS dblib.dll 
from www.freetds.org)
So if this functionality will not be included in main stream version of 
dblib, then I can not use it.

If you agree, that we can add this functionality in some way then I can 
try do it and post patch ... then please give me direction, which is the 
preffered method
(for example: extending DBCOL structure by adding:
 SHORT ServerType (wType);
 DBINT ServerMaxLength (wMaxLength);
-or-
adding new function dbcolwtype()?
-or-
 modify existing FreeTDS-only function dbtablecolinfo() which will 
provide original server's column types?
)

TIA
-Laco.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.