Gefehler in Mystic's code



  • Ich wollte auch mehr sprachen in mein Programm anlegen.Darum habe ich das codebespiel von MysticEmpires genommen :

    CString strPath = CString( GetCommandLine()).Left( CString(GetCommandLine()).ReverseFind('\\'));
        strcat(strPath, "\\translation.ini");
    
        CStdioFile File;
        CString m_1;
        CString m_2;
        CString m_3;
        CString m_4;
        if(File.Open(strPath,CFile::modeRead,NULL) )
        {
            File.ReadString(m_1);
            File.ReadString(m_2);
            File.ReadString(m_3);
            File.ReadString(m_4);
            File.Close();
            GetDlgItem(IDC_RADIO_CS)->SetWindowText(m_1);
            GetDlgItem(IDC_RADIO_HL)->SetWindowText(m_2);
            GetDlgItem(IDOK)->SetWindowText(m_3);
            GetDlgItem(IDCANCEL)->SetWindowText(m_4);
        }
    

    Aber leider bekomme ich eine fehlermeldung:

    strcat' : Konvertierung des Parameters 1 von 'class CString' in 'char *' nicht moeglich
    Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden



  • Ähm, vielleicht ist ein CString nicht direkt in einen char* konvertierbar. Ein std::string lässt sich z.b. durch die Methode c_str() in einen char* umwandeln. Schau bei CString nach einem Äquivalent dafür.

    Aber selbst wenn eine direkte konvertierung in char* eingebaut wurde, beruht sie sicherlich auf const char*. Der erste Parameter von strcat() muss allerdings veränderbar sein.

    Dir bleibt nichts anderes übrig, als strcat() für CString zu implementieren.

    MfG SideWinder



  • hört sich blöd an aber was genau muss ich machen.



  • SideWinder was laberst du da wieder... ne ne ne keine Ahnung von MFC 😉

    Das geht doch ganz einfach:

    statt

    strcat(strPath,"\\translation.ini");
    

    Nimmst du das :

    strpath += "\\translation.ini";
    

    CString ist ja schließlich eine Stringklasse...

    Devil


Anmelden zum Antworten