[fpc-devel] Re: cvarutil: convert variant array of bytes into ansistring ?

LacaK lacak at zoznam.sk
Mon Oct 24 10:29:56 CEST 2011


Hi Sergei,
Thank you for your reply.
As it is out of my comfort zone, I leave it to up to you (if or when you implement this)
TIA
-Laco.

> It has to be done in a different and more complex way, by using VariantChangeTypeEx to convert the 
> variant(array) to varOleString type, then converting latter to ansistring.
> This way, in Windows the job will be delegated to OS, which is Delphi compatible. For non-Windows, 
> the relevant code ends up in VariantChangeTypeEx (varutils.inc).
> Also, you'll need to access the variant array with SafeArray* functions, and make checks that it is 
> actually one-dimensional and its element type is eligible for conversion.

> Sergei

> Hi,
> I am now working on fcl-db TBinaryField, which has Value: Variant 
> property.
> As I understand documentation, this variant should be returned as 
> variant array of bytes.
>
> Later when are assigning values of fields into params also this 
> variant array is copied (into TParam).
>
> But when I want/need read parameter value as string (binary string) 
> then "variant convert error" occurs.
> It is because in cvarutil.inc in Function VariantToAnsiString(const 
> VargSrc : TVarData) is not supported conversion from variant array 
> into string.
>
> So my question is if it is acceptable to add there support for 
> converting byte array to string ?
> Something like attached diff.
>
> Please let me know, if this can be accepted/applied ?
> Thanks
> -Laco.



More information about the fpc-devel mailing list