Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Unmanage string convert into manage string

0 views
Skip to first unread message

jeff

unread,
Mar 6, 2007, 1:41:40 PM3/6/07
to
Hi Guys,

I have read a string from Unmanaged code, however, when I convert ptr to
string.
It also include "\r\n" in the string, how to avoid this issue:

here is my source code:
IntPtr m_pMessge = new IntPtr(0);

// this call native code [dll file]
ReplayForm(ref m_pMessge,this.E_User,this.E_Password);
//convert pointer to object string
string strMessage = Marshal.PtrToStringBSTR(m_pMessge);
/*****
after it has been converted, it holds \r\n ""
*/
strMessage = strMessage.Replace(@"=\r\n", @"\r\n");

Thanks


<ctacke/>

unread,
Mar 6, 2007, 4:21:28 PM3/6/07
to
I'd want to see the native code that it calls.


--
Chris Tacke - Embedded MVP
OpenNETCF Consulting
Managed Code in the Embedded World
www.opennetcf.com
--


"jeff" <je...@discussions.microsoft.com> wrote in message
news:2B5EB157-0C5D-49C0...@microsoft.com...

jeff

unread,
Mar 6, 2007, 4:58:23 PM3/6/07
to

here is some code:

DLLEXPORT bool ReplayForm(BSTR* bt,LPTSTR szUser,LPTSTR szPassword)
{
CLogger::Record(L"ReplayForm");
if(!SyncService(szUser,szPassword))
return false;
int i = 0;
while(!TrackMessage(bt))
{
i++;
if(!SyncService(szUser,szPassword))
break;
Sleep(5000);
if(i > 120)
break;
};
return true;
}

bool TrackMessage(BSTR* bt)
{
//here I have not put my actual code, since it is too complicated.
//in fact, save all the string to CString instance, and then
CString strMessage ="some long string which hold return";
*bt = ::SysAllocString(strMessage.GetBuffer(strMessage.GetLength()));
return true;
}

Thanks.

<ctacke/>

unread,
Mar 6, 2007, 5:40:45 PM3/6/07
to
All I can say is to check that your TrackMessage isn't putting in newlines
or returns. The system surely doesn't instert them automatically.

And where exactly is the SysFreeString mate to your SysAllocString?
Furthermore why use a BSTR anyway? Are you also interoping with COM? If
not, get rid of it.


--
Chris Tacke - Embedded MVP
OpenNETCF Consulting
Managed Code in the Embedded World
www.opennetcf.com
--


"jeff" <je...@discussions.microsoft.com> wrote in message

news:E161A2AD-A7E7-4113...@microsoft.com...

jeff

unread,
Mar 7, 2007, 10:18:08 AM3/7/07
to
Hi Chris,

Thanks for your kind help.

However, Since I am pretty new to NET and C++;

Would you mind telling how to read native code CString into NET string?

because I read some message via CEMAPI to get Mail body.
and pass them to NET managment code.
when reading message from email, it holds some "returnkey"!
and other specifically character, so I think when I Allocate to heap.
It read one byte by byte. so the there are something is wrong.

Thanks

0 new messages