[C++]VS2005 falsche rückgabe GetFileSize

Halcom

Grünschnabel
Hallo,

ich wollte die Daten einer Datei (bmp) in ein array schreiben. Um zu bestimmen wie lang die datei ist benutze ich GetFileSize. Leider gibt das mir einen wert von 4,2GB aus obwohl mein bmp nur 1,3MB groß ist. wer kann mir den da helfen?

Code:
bool Bildverarbeitung::LoadPic(System::String ^File)
{	
	// Open File 
	LPCSTR PfadName= "C:\\1_L_1.bmp";
	HANDLE hFile=CreateFile((LPCWSTR)PfadName,
		GENERIC_READ,
		0, //FILE_SHARE_READ
		NULL,
		OPEN_EXISTING,
		0, //FILE_ATTRIBUTE_NORMAL
		NULL);
	// Lesen des gesamten Files in den Speicher
	DWORD numBytesRead=0;											// Wieviele Bytes wurden gelesen
	FileSize=GetFileSize(hFile,NULL);								// Bestimmt dateigröße in Bytes (unsigned char)
	
	FileData =(unsigned char*)malloc(FileSize);						// reserviert speicher
	ReadFile(hFile,FileData,FileSize,&numBytesRead,NULL);			//schreibt File in speicher
...
}

im voraus schon mal Danke
 
Dein CreateFile schlägt fehl, weil du da einen Ascii-String brutal zu einem Unicode-String castest. Du bekommst einen Fehlerwert von GetFileSize zurück.

Merke -> Immer Rückgabewerte prüfen

Benutze entweder eine Umwandelroutine für Ascii-nach-Unicode (MultiByteToWideChar) oder CreateFileA (funktioniert aber dann nur für Ascii-Dateinamen).
 
Zurück