cast problem bei WriteFile..



  • void SendData (const char* buffer, unsigned int iBytesToWrite)
    {
      	for(unsigned int i = 0; i <= iBytesToWrite; i++)
    	{
    		WriteFile(hComm, buffer[i], 1, &dwBytesWritten, &o_send);
    
    		if(!GetOverlappedResult(hComm, &o_send, &dwBytesWritten, TRUE))
    		{
    			throw Exception("::Error occurred in the overlapped operation!", __FILE__, __LINE__);
    		}
    	}
    }
    

    error C2664: 'WriteFile' : cannot convert parameter 2 from 'const char' to 'LPCVOID'
    Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

    hm...mit reinterpret_cast funktionierte es dann auch nicht;-(

    cu



  • Hallo,

    WriteFile erwartet einen LPCVOID, du übergibst aber buffer[i], das ist ein (const) char, ist also falsch. buffer ist allerdings (so hast du die Funktion SendData selbst definiert) schon ein const char*, d.h. ein LPCSTR, und damit "kompatibel" zu LPCVOID, also einfach die Indizierung weglassen, und Zeigerarithmetik darauf loslassen:

    WriteFile(hComm, buffer + i, 1, &dwBytesWritten, &o_send);
    

    Leichtsinnsfehler oder fehlende C/C++-Grundlagen, oder..., oder...? 😉

    MfG


Anmelden zum Antworten