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);
    

Anmelden zum Antworten