Fehler beim erstellen



  • Hi.
    Ich wollte mal mein Project über diese Batch-Erstellung erstellen.
    Einige der Fehler konnte ich shcon ganz gut beheben,
    wollte, aber dennoch Fragen ob es da passendere möglichkeiten gibt.
    z.b. habe ich alle MessageBox's nun in der art:

    MessageBox(NULL, TEXT("Ausgabetext"), TEXT("Titel"), MB_OK);
    

    dieses TEXT() musste ich machen weil sonst der compiler rumnörgelt.
    ist diese art in dieser ausführung okay oder gibt es da weitaus bessere lösungen?

    ein anderes probleme habe ich beim zuweisen von strings.
    hier mal der code-ausschnitt:

    void FillList(HWND hwnd)
    {
    	WIN32_FIND_DATA fd;
    	HANDLE fHandle;
    	int iCount=0;
    	int iFileCount=0;
    	fHandle=FindFirstFile(TEXT("*.obj"),&fd);
    	iFileCount++;
    	while(FindNextFile(fHandle, &fd))
    		iFileCount++;
    	FindClose(fHandle);
    	LItem = new ListenItem[iFileCount];
    	fHandle=FindFirstFile(TEXT("*.obj"),&fd);
    	SendMessage(hwnd, LB_ADDSTRING, 0, (LPARAM)fd.cFileName);
    	LItem[iCount].cFilename=fd.cFileName;
    	if(strstr(fd.cFileName,TEXT("testmap")))
    		SendMessage(hwnd, LB_SETCURSEL, 0, 0);
    	iCount++;
    	while(FindNextFile(fHandle,&fd))
    	{
    		SendMessage(hwnd, LB_ADDSTRING, 0, (LPARAM)fd.cFileName);
    		LItem[iCount].cFilename=fd.cFileName;
    		if(strstr(fd.cFileName,"testmap"))
    			SendMessage(hwnd, LB_SETCURSEL, iCount, 0);
    		iCount++;
    	}
    	FindClose(fHandle);
    }
    

    und dazu habe ich folgende fehlermeldung:

    .\Main.cpp(239) : error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'WCHAR [260]' akzeptiert (oder keine geeignete Konvertierung möglich)
            C:\Programme\Microsoft Visual Studio 9.0\VC\include\xstring(914): kann 'std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(const std::basic_string<_Elem,_Traits,_Ax> &)' sein
            with
            [
                _Elem=char,
                _Traits=std::char_traits<char>,
                _Ax=std::allocator<char>
            ]
            C:\Programme\Microsoft Visual Studio 9.0\VC\include\xstring(919): oder "std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(const _Elem *)"
            with
            [
                _Elem=char,
                _Traits=std::char_traits<char>,
                _Ax=std::allocator<char>
            ]
            C:\Programme\Microsoft Visual Studio 9.0\VC\include\xstring(924): oder "std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(_Elem)"
            with
            [
                _Elem=char,
                _Traits=std::char_traits<char>,
                _Ax=std::allocator<char>
            ]
            bei Anpassung der Argumentliste '(std::string, WCHAR [260])'
    .\Main.cpp(240) : error C2665: "strstr": Durch keine der 2 Überladungen konnten alle Argumenttypen konvertiert werden.
            C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(165): kann 'const char *strstr(const char *,const char *)' sein
            C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(189): oder "char *strstr(char *,const char *)"
            C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(165): oder "const char *strstr(const char *,const char *)"
            C:\Programme\Microsoft Visual Studio 9.0\VC\include\string.h(189): oder "char *strstr(char *,const char *)"
            bei Anpassung der Argumentliste '(WCHAR [260], const wchar_t [4])'
    

    die verweise sind auf die zeilen mit:

    LItem[iCount].cFilename=fd.cFileName;
    if(strstr(fd.cFileName,TEXT("testmap")))
    

    (cFilename ist ein std::string)

    hat vllt jemand ein tipp, wie ich diese fehler beheben kann?



  • Benutze std::wstring .


Log in to reply