Hilfe bei Fehlermeldung
-
habe folgende Fehlermeldung
\printdlg.cpp(1349) : error C2440: '=' : 'unsigned short [11]' kann nicht in 'unsigned short [64]' konvertiert werden
Nun weiß ich ganricht nicht mehr so richtig weiter was ich am besten machen soll bzw. wie.
-
Zeig doch einfach mal die beiden Definitieonen der Variablen die Da verwendet werden... und natürlich wie die Zuweisung aussieht...
-
Also das ganz sieht so aus
const int PEP_DLL_NAME_LEN = 64; struct CRPEExportOptions { void *m_formatOptions; _TCHAR m_destinationDLLName [PEP_DLL_NAME_LEN]; }
So ich habe nun ein Variable auf das struct angelegt
CRPEExportOptions crp: crp.m_destinationDLLName = "xlsdsk.dll";
aber das ganze passt irgendwie alles nicht zusammen. Nur weiß ich nicht so richtig wie ich es machen soll
-
machs so:
strncpy(crp.m_destinationDLLName, "xlsdsk.dll",PEP_DLL_NAME_LEN);
Die ursache is das Du versuchst einen Zeiger("xlsdsk.dll") auf die Variable crp.m_destinationDLLName zuzuweisen. Das geht nicht, da crp.m_destinationDLLName ein char-Array ist.
Gruß
-
Naja, naja, naja... das kann aber zu einem bösen absturz führen!
Aus meiner Sicht solltest Du besser "std::string" bzw. "std::wstring" verwenden oder aber folgendes:
StringCbCopy(crp.m_destinationDLLName, sizeof(crp.m_destinationDLLName), _T("xlsdsk.dll")
-
Hab jetzt mal beide Bsp. ausprobiert bekomme aber dennoch folgenden Fehler
\printaqisreportdlg.cpp(1350) : error C2664: 'strncpy' : Konvertierung des Parameters 1 von 'unsigned short [64]' in 'char *' nicht moeglich
-
Du solltest auch immer die _tcsncpy version verwenden... aber wie gesagt, hier kann Dein Programm abstürzen...
Verwende entweder das "StringCbCopy" oder mach es halt so:LPCTSTR szSrc = _T("xlsdsk.dll"); if (_tcslen(szSrc) > PEP_DLL_NAME_LEN) { _tcsncpy(crp.m_destinationDLLName, szSrc, PEP_DLL_NAME_LEN); crp.m_destinationDLLName[PEP_DLL_NAME_LEN-1] = 0; } else _tcscpy(crp.m_destinationDLLName, szSrc);