Hej! Mam problem z odczytem pliku tekstowego przy użyciu Windows API (piszę bibliotekę DLL i mi jest potrzebny odczyt plików txt)
Funkcja wygląda tak :
LPSTR OdczytajZawartoscPliku(LPCTSTR fileName)
{
HANDLE hFile;
DWORD dwBytesRead = 0;
char ReadBuffer[BUFFERSIZE] = {0};
LPSTR ZawartoscPlikuTekstowego = NULL;
hFile = CreateFile(fileName,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, TEXT("Nie można otworzyć pliku! "), TEXT("Błąd"), MB_OK | MB_ICONERROR);
return NULL;
}
if( FALSE == ReadFile(hFile, ReadBuffer, BUFFERSIZE-1, &dwBytesRead, NULL) )
{
MessageBox(NULL, TEXT("Nie można przeczytać zawartości pliku! "), TEXT("Błąd"), MB_OK | MB_ICONERROR);
CloseHandle(hFile);
return NULL;
}
if (dwBytesRead > 0 && dwBytesRead <= BUFFERSIZE-1)
{
ReadBuffer[dwBytesRead]='\0'; // NULL character
//_tprintf(TEXT("Data read from %s (%d bytes): \n"), argv[1], dwBytesRead);
printf("%s\n", ReadBuffer);
}
else if (dwBytesRead == 0)
{
MessageBox(NULL, TEXT("Zawartość pliku jest pusta! "), TEXT("Błąd"), MB_OK | MB_ICONERROR);
}
else
{
MessageBox(NULL, TEXT("Niespodziewana wartość w dwBytesRead! "), TEXT("Błąd"), MB_OK | MB_ICONERROR);
}
// zamknięcie uchwytu pliku
CloseHandle(hFile);
ZawartoscPlikuTekstowego = ReadBuffer;
MessageBoxA(NULL, ReadBuffer, "Informacja", MB_OK | MB_ICONINFORMATION); // tutaj jest ok wyswietlane
MessageBoxA(NULL, ZawartoscPlikuTekstowego, "Informacja", MB_OK | MB_ICONINFORMATION); // tutaj tez ok
return ZawartoscPlikuTekstowego;
}
Wewnątrz funkcji wszysztko ok. Jak funkcje wywołam z innego pliku to już się krzaczy np : w pliku głównym :
MessageBoxA(NULL, OdczytajZawartoscPliku(szPelnaSciezkaZPlikem), "Informacja", MB_OK | MB_ICONINFORMATION);
to już nic nie pokazuje.... Tzn puste okienko...
Problem z konwersja z ANSI?
Czy może lepiej użyć standardowych funkcji C++ do odczytu zawartości plików tekstowych?