Was ist da Verkehrt ??



  • Wie Werner Salomon schon sagte, das TEXT-Makro ist für Stringliterale gedacht. Du hast zwar nicht geschrieben, was buf ist, aber ein Stringliteral ist es jedenfalls nicht.



  • Hi hier dass moechte ich damit Anstellen

    do
    	{
    		char buf[1024];
    		empfBytes = recv(connectedSocket,buf,1024,0);
    		if(string(buf).substr(0,empfBytes) != "shutdown")
    		{
                typedef std::basic_string< TCHAR > tstring; 
    			tstring text = TEXT(buf);
    			MessageBox(NULL,text.substr(0,empfBytes).c_str(),TEXT("Server Message"),MB_OK);
    		}break;
    	} while(a!=5);
    

    Die ueber den Socket empfangegnen char Bytes moechte ich ganz einfach in einer Message Box ausgeben.



  • manchmal sind die Dinge einfacher als man glaubt 😉

    do
    {
        char buf[1024];
        const int empfBytes = recv( connectedSocket, buf, sizeof(buf)-1, 0 );
        buf[empfBytes] = char(0); // String-Ende sicher setzen
        if( string(buf) != "shutdown" )
        {
            MessageBox( NULL, buf, TEXT("Server Message"), MB_OK );
        }
        else
            break;
    } while( a!=5 );  // was ist 'a'?
    

    Sollte funktionieren, solange Du die Applikation ohne Unicode übersetzt und nur ASCII-Daten also lesbare Zeichen über die Socket--Schnittstelle reinkommen.

    Gruß
    Werner



  • Leider nicht , es gibt da noch ein Problemchen :-

    do
    	{
    		char buf[1024];
    		const int empfBytes = recv(connectedSocket,buf,sizeof(buf)-1,0);
    
    		buf[empfBytes] = char(0);
    
    		if(string(buf).substr(0,empfBytes) != "shutdown")
    		{
    			cout << string(buf).substr(0,empfBytes);
    			MessageBox(NULL,buf,TEXT("Server Message"),MB_OK);
    		}break;
    	} while(a!=5);
    
    Fehler	1	error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'char [1024]' in 'LPCWSTR' nicht möglich	c:\dokumente und einstellungen\admin\desktop\loadbg\socketserver\socketserver\main.cpp	74
    


  • Wie kann ich machen dass nich Unicode uebersetzt wird ??

    Ich arbeite mit microsoft visual c++.



  • Werner Salomon schrieb:

    Sollte funktionieren, solange Du die Applikation ohne Unicode übersetzt

    Ich arbeite mit microsoft visual c++.

    Welche Version genau?



  • Werner Salomon schrieb:

    Sollte funktionieren, solange Du die Applikation ohne Unicode übersetzt ..

    und wer lesen kann, ist im Vorteil 😉

    Um diesen String in die MessageBox zu schreiben musst Du ihn erst nach Wide-Character konvertieren.

    do
    {
        char buf[1024];
        const int empfBytes = recv( connectedSocket, buf, sizeof(buf)-1, 0 );
        buf[empfBytes] = char(0); // String-Ende sicher setzen
        if( string(buf) != "shutdown" )
        {
            USES_CONVERSION;
            MessageBox( NULL, A2T(buf), TEXT("Server Message"), MB_OK );
        }
        else
            break;
    } while( a!=5 );  // was ist 'a'?
    

    Zu den Details frag' bitte im MFC-Forum nach. .. und lass die substr-Aufrufe weg; in diesem Fall sind die überflüssig.

    Gruß
    Werner



  • @Werner Salomon

    Funktioniert leider nicht 😞

    Fehler	1	error C2065: 'USES_CONVERSION': nichtdeklarierter Bezeichner	c:\dokumente und einstellungen\admin\desktop\loadbg\socketserver\socketserver\main.cpp	73
    
    Fehler	2	error C3861: "A2T": Bezeichner wurde nicht gefunden.	c:\dokumente und einstellungen\admin\desktop\loadbg\socketserver\socketserver\main.cpp	74
    

    @MFK

    Microsoft Visual C++ 2005



  • Meine Loesung die Leider das Programm zum abstürtzen bringt:

    wchar_t* text;
    			mbstowcs(text,buf,1024);
    			MessageBox(NULL,text,TEXT("Server Message"),MB_OK);
    


  • Sei doch nicht so unselbstständig!
    Wenn der dir so ne Fehlermeldung raushaut ist es ja wohl das mindeste mal eben selber in die MSDN zu schauen.
    Was dir fehlt ist nen include von atlconv.h.
    A2W ist aber MFC Kram.Ist das überhaupt ne MFC Anwendung?

    Bei VS 2005 sind die Projekte per default auf Unicode eingestellt.
    Das kannst du unter:
    Projekt->Eigenschaften->Konfigurationseigenschaften->Allgemein ändern.
    Einfach unter Projektstandards->Zeichensatz "nicht festgelegt" auswählen.
    Damit läufst du aber nur vor deinem Problem weg.....und wer wegläuft ist feige 😉

    MfG Spacelord



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten