konvertieren von void* zu const unsigned short*



  • wie die überschrift schon sagt versuche ich vergeblich eine void* in ein const unsigned short* zu bekommen.
    ich hab es schon mit wsprintf versucht aber das funzt auch net so.

    kann mir jemand helfen?



  • versuche ich vergeblich eine void* in ein const unsigned short* zu bekommen

    Wie wäre es mit einem simplen static_cast?

    void* p = ...;
    const unsigned short* u = static_cast<unsigned short*>(p);
    


  • danke.
    ich hatte es schon mit reinterpret_cast und const_cast probiert wusste aber net das es auch ein static_cast gibt.



  • die freude war zu früh.
    der compiler schimpft zwar nicht mehr rum dafür bekomm ich als ausgabe nur lauter kästchen

    ich hab hier mal den code (es ist zwar winapi das problem liegt aber im reinen c++):

    static HANDLE hdatei;
    	LPVOID buffer;
    	static DWORD size;
    	static DWORD bytes;
    
    	hdatei = CreateFile(TEXT("\\programme\\wanderkarte\\events.txt"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);	
    
    	size = GetFileSize(hdatei,NULL);
    
    	buffer = malloc(size);
    
    	if(hdatei == INVALID_HANDLE_VALUE)
    	{
    		MessageBox(NULL,L"schade",L"",MB_OK);
    	}
    	else
    	{
    		if(0 == ReadFile(hdatei, buffer, 10, &bytes,NULL))
    		{
    			MessageBox(NULL,L"datei konnte nicht gelesen werden",L"",MB_OK);
    		}
    		else
    		{
    			//MessageBox(NULL,L"datei konnte gelesen werden",L"",MB_OK);
    			MessageBox(NULL,static_cast<const unsigned short*>(buffer),L"",MB_OK);
    		}
    	}
    	free(&buffer);
    	CloseHandle(hdatei);
    


  • Bist du sicher, dass events.txt Unicode-Text enthält?



  • ja es steht: hallo
    drinn.
    den letzten buchstabe ("o") zeigt er ja auch an aber davor nur kästchen



  • konvertierer schrieb:

    ja es steht: hallo
    drinn.
    den letzten buchstabe ("o") zeigt er ja auch an aber davor nur kästchen

    Lass mich raten: Davor stehen nur zwei "Kästchen"?



  • nein es stehen so viele kästchen wie es zeichen sind.
    hast du nen verdacht?



  • konvertierer schrieb:

    hast du nen verdacht?

    Ja. Wie groß ist die Datei?



  • 10 Byte
    der fehler passiert aber auch bei größeren dateien



  • konvertierer schrieb:

    10 Byte
    der fehler passiert aber auch bei größeren dateien

    Komisch, bei mir klappt's: Keine Kästchen.
    Kannst du mal den Inhalt der Datei als Hexdump posten?

    Nachtrag:
    Dass es mit größeren Dateien nicht klappt, könnte auch daran liegen, dass du zwar brav die Dateigröße ermittelst, dann aber trotzdem immer 10 Bytes ausliest.


Anmelden zum Antworten