Hi, Lei.

Having followed this thread, a question arises for me.
I am in a similar situation with an application that keeps its configuration in an XML 
file. This file is also intended to contain localized messages. I thought that to be a 
good idea as XML should handle Unicode, and of course I'd compile my VC++ appication 
with Unicode, expecting CString to work on 16 bit characters (or whatever appropriate) 
to support Japanese messages.

Now how do I have to use the unicode CString with Xerces? Is there a suitable 
XMLString::transcode method?

Hiran


> -----Original Message-----
> From: jiang lei [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, February 04, 2004 9:41 AM
> To: [EMAIL PROTECTED]
> Subject: Re: MemBufInputSource with CString
> 
> 
> Hi Jimmy,
> 
> A few suggestions:
> 
> 1.in your function void X(CString setting, CString changeval) ,
> Passing parameters by object is usually not a good idea. 
> Unless, of course
> you want to make  copies and leave the masters intact.( CString's copy
> constructor, however, will share the master's buffer if the 
> LPCTSTR() cast
> is not used.)
> 
> 2. Notice that CString's internal buffer is of type "TCAR" 
> rather than the
> intrinsic c type "char". It will change into "wchar_t" if 
> someone compiles
> your program with a "UNICODE" directive. I'd preffer  
> std::string in this
> case. But in your program I did not see any necessity to use a string
> object. A simple "const char*" pointer will work just fine.
> 
> 3. AFAIK XercesDOMParser will delete it's internal document in it's
> destructor. So if you delete the parser in ParseDocument(), the
> "DOMDocument"pointer you returned will be invalid and cause a 
> protection
> fault if you try to use the object. On the other hand if you 
> don't delete
> it, there will be a memory leak. So your program can either:
>      keep a pointer to the parser when you use "new" to 
> create it. Make sure
> the parser lives long enough until you've finished using it's internal
> document object.             and then delete the parser.
> or
>       make a copy of the parser's internal document and 
> delete the parser in
> ParseDocument();
> 
> remember in C++ every object created with "new" should be 
> destructed with
> "delete", and it's up to you to keep those objects valid.
> 
> 
> 
> regards
> 
> Lei
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to