Re: Conversion from ANSI to UNICODE errors
From: Relvinian (m_at_msn.com)
Date: 07/14/04
- Next message: Tom Bassel: "Re: sizeof() ?"
- Previous message: Doug Harrison [MVP]: "Re: WaitForSingleObject freezes application"
- In reply to: Alexander Grigoriev: "Re: Conversion from ANSI to UNICODE errors"
- Next in thread: Alexander Grigoriev: "Re: Conversion from ANSI to UNICODE errors"
- Reply: Alexander Grigoriev: "Re: Conversion from ANSI to UNICODE errors"
- Messages sorted by: [ date ] [ thread ]
Date: Tue, 13 Jul 2004 22:46:04 -0600
I wouldn't necessarily do them --- besides, if you watch the "guts", meaning
looking at the assembly, a pointer is a pointer, doesn't matter what type it
is. Just a four-byte value!
But if you know what the data is and are always aware, you'll be ok. Of
course, the better solution is finding out why!
But if you *always* compile for ANSI systems and you are using a CString
object and trying to pass data to a const char*, type casting is just fine.
But the question remains, why are you using CString or trying to pass data
to a const char* function instead of a (possible) w_char* function?
Relvinian
"Alexander Grigoriev" <alegr@earthlink.net> wrote in message
news:e3VQPrVaEHA.4052@TK2MSFTNGP10.phx.gbl...
> Don't do those casts. You're just masking the error.
>
> "Relvinian" <m@msn.com> wrote in message
> news:zLGdnYPtEKJOKWndRVn-sQ@comcast.com...
> > Fausto,
> >
> > What this error message is saying is that the compiler can't convert a
> > CString object to a const char*. You will need to double type-cast the
> > CString object to get it into a const char* format.
> >
> > Example:
> >
> > (LPCSTR)(LPCTSTR)m_saveAsFilename
> > (LPCSTR)(LPCTSTR)fullpath
> >
> > Also note:
> > If you are compiling the project with _UNICODE defined, CString
> > automatically uses unicode as the default (could be why you are
receiving
> > this compiler error message). This could cause problems with your
> > type-casting if you have it so. If you don't have _UNICODE defined, the
> > double type-cast should work ok for you.
> >
> > Relvinian
> >
> > "Fausto Lopez" <fuzzlog2000@earthlink.net> wrote in message
> > news:zwVIc.2044$Qu5.1548@newsread2.news.pas.earthlink.net...
> > > Can any body help to figure out why the following code generates the
> > > following errors at compile time, and also any suggestions on how to
fix
> > it?
> > >
> > > BACKGROUND INFO
> > > --HRESULT AnsiToUnicode(LPCSTR pszA, LPOLESTR* ppszW) <-- Function
> > > definition
> > > --private:
> > > CString m_saveAsFilename; <-- Private variable definition inside
> > class
> > > --CString fullpath = GetDocument()->GetPathName();
> > >
> > > CODE IN QUESTION
> > > -- AnsiToUnicode(m_saveAsFilename,&m_pwBuffer);
> > > -- AnsiToUnicode(fullpath,&m_pwBuffer);
> > >
> > > ERROR MESSAGED FOR BOTH FUNCTION CALLS
> > > error C2664: 'AnsiToUnicode' : cannot convert parameter 1 from 'class
> > > CString' to 'const char *'
> > > No user-defined-conversion operator available that can perform
> > this
> > > conversion, or the operator cannot be called
> > >
> > >
> > > Fausto
> > >
> > >
> >
> >
>
>
- Next message: Tom Bassel: "Re: sizeof() ?"
- Previous message: Doug Harrison [MVP]: "Re: WaitForSingleObject freezes application"
- In reply to: Alexander Grigoriev: "Re: Conversion from ANSI to UNICODE errors"
- Next in thread: Alexander Grigoriev: "Re: Conversion from ANSI to UNICODE errors"
- Reply: Alexander Grigoriev: "Re: Conversion from ANSI to UNICODE errors"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|