Question

I am using this code to format WideString but with no success! It prints unexpecting results :(

here is my code

WideString s;
dep=new TStringList();
while(!DM->tDepPln->Eof)
    {
    //where tDepPlnFltNo is mysql field type of WideString
        s.sprintf(L"%-11S",DM->tDepPlnFltNo->AsWideString);
        dep->Add(s);
        DM->tDepPln->Next();
    }

when I use s.sprintf(L"%-11S","blablabla"); it works but when i set to mysql field type of WideString it's not!! I think the problem is with conversion!

How to correct it ???

Était-ce utile?

La solution

Your format specifier is using uppercase S, which tells Unicode flavors of ...printf() functions (such as the one used inside of WideString:::sprintf()) to expect a char* instead of a wchar_t* (and Ansi flavors of ...printf() functions to expect a wchar_t* instead of a char*). That is why s.sprintf(L"%-11S","blablabla") works - you are passing it a char*.

For what you are attempting, you need to use lowercase s instead. You also need to use the WideString::c_bstr() method when passing a WideString value to a ...printf() function, eg:

s.sprintf(L"%-11s", DM->tDepPlnFltNo->AsWideString.c_bstr());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top