type cast a CString to a LPTSTR
-
How can I type cast a CString to a LPTSTR to avoid this error: 'type cast' : cannot convert from 'char *(__thiscall CString::*)(int)' to 'char *':confused:
Try CString::GetBuffer.;) Oscar L.
-
Try CString::GetBuffer.;) Oscar L.
-
Try CString::GetBuffer.;) Oscar L.
Code problem: This is the structure of rvi: typedef struct _RVITEM { UINT nMask; INT iItem; INT iSubItem; LPTSTR lpszText; INT iTextMax; INT iTextColor; INT iImage; INT iCheck; INT iBkColor; UINT nPreview; INT iIndent; UINT nState; LPARAM lParam; INT iOverlay; _RVITEM() : nMask(0), iItem(RVI_INVALID), iSubItem(-1), lpszText(NULL), iTextMax(0), iTextColor(-1), iImage(-1), iCheck(-1), iBkColor(-1), nPreview(0), iIndent(-1), nState(0), lParam(0), iOverlay(0) {}; } RVITEM, FAR* LPRVITEM; CString strDato; //The followin returns a CString: pBdeDb->GetFieldAsString(1,&bIsBlank); strDato = pBdeDb->GetFieldAsString(1,&bIsBlank); //strncpy(strDato, Dato, strDato.GetLength()); rvi.iSubItem = 0; rvi.lpszText = strDato.GetBuffer;//<--------------Problem--------- rc.SetItem(&rvi);
-
Code problem: This is the structure of rvi: typedef struct _RVITEM { UINT nMask; INT iItem; INT iSubItem; LPTSTR lpszText; INT iTextMax; INT iTextColor; INT iImage; INT iCheck; INT iBkColor; UINT nPreview; INT iIndent; UINT nState; LPARAM lParam; INT iOverlay; _RVITEM() : nMask(0), iItem(RVI_INVALID), iSubItem(-1), lpszText(NULL), iTextMax(0), iTextColor(-1), iImage(-1), iCheck(-1), iBkColor(-1), nPreview(0), iIndent(-1), nState(0), lParam(0), iOverlay(0) {}; } RVITEM, FAR* LPRVITEM; CString strDato; //The followin returns a CString: pBdeDb->GetFieldAsString(1,&bIsBlank); strDato = pBdeDb->GetFieldAsString(1,&bIsBlank); //strncpy(strDato, Dato, strDato.GetLength()); rvi.iSubItem = 0; rvi.lpszText = strDato.GetBuffer;//<--------------Problem--------- rc.SetItem(&rvi);
Sorry. Use -> strDato.GetBuffer(0); But, remember that this buffer is temporary if strDato is local variable.!! To avoid this, create a buffer : rvi.lpszText = new char[strDato.GetLength()]; strcpy(rvi.lpszText, strDato); ;) Oscar L.
-
Sorry. Use -> strDato.GetBuffer(0); But, remember that this buffer is temporary if strDato is local variable.!! To avoid this, create a buffer : rvi.lpszText = new char[strDato.GetLength()]; strcpy(rvi.lpszText, strDato); ;) Oscar L.
-
Te aconsejo usar strcpy(rvi.lpszText, strDato.GetBuffer(0)); Cheers!!! :) Carlos Antollini.
-
Te aconsejo usar strcpy(rvi.lpszText, strDato.GetBuffer(0)); Cheers!!! :) Carlos Antollini.
Ese tambien funciona. La diferencia esta en que la primera devuelve un LPCTSTR (que es constante y es menos peligrosa) y la segunda devuelve un LPTSTR que se puede modificar directamente. Si deseas poder usar cast: strcpy(rvi.lpszText, (LPCTSTR) strDato); Oscar L.
-
Ese tambien funciona. La diferencia esta en que la primera devuelve un LPCTSTR (que es constante y es menos peligrosa) y la segunda devuelve un LPTSTR que se puede modificar directamente. Si deseas poder usar cast: strcpy(rvi.lpszText, (LPCTSTR) strDato); Oscar L.
-
Te aconsejo usar strcpy(rvi.lpszText, strDato.GetBuffer(0)); Cheers!!! :) Carlos Antollini.
-
Abusando de tu amabilidad: Podrias enseñarme como convierto de: double a LPTSTR. BOOL PTSTR. COleDateTime a LPTSTR. Long a LPTSTR. int a LPTSTR. :-O
Jose! Dale un vistazo a la documentación de CString::Format con la cual podes realizar las conversiones tipo sprintf. De igual forma COleDateTime tambien tiene el método COleDataTime::Format. Oscar L.
-
Jose! Dale un vistazo a la documentación de CString::Format con la cual podes realizar las conversiones tipo sprintf. De igual forma COleDateTime tambien tiene el método COleDataTime::Format. Oscar L.
-
Gracias. Podrias echarme la mno con mi otra pregunta. de como convertir de los otros diferentes tipos de datos a LPTSTR:-O
Usa wsprintf. LPTSTR str = NULL; int n = 1000; malloc((LPTSTR)str, 256); //or the size that you want wsprintf(str, "%d", n); //int -> LPTSTR Check the documentatión about wsprintf for other types. Carlos Antollini.
-
Gracias. Podrias echarme la mno con mi otra pregunta. de como convertir de los otros diferentes tipos de datos a LPTSTR:-O
También tenes las funciones itoa() y ltoa() para convertir the int y long a Ascii luego lo convertis a LPCTSTR. El booleano es sencillo. BOOL bVAl = TRUE; LPTSTR str = bVal ? "TRUE": "FALSE"; Saludos :) Carlos Antollini.