Witam
Mam malutki problem z WinApi
Otóż napisałem sobie program do odczytywania i zapisywania plików (na razie tekstowych)
#include <windows.h>
#include <string>
#include <iostream>
#include <conio.h>
using std::string;
using std::cout;
bool WriteText(string& Text);
bool ReadText(string& Out);
string FilePath = "C:\\TestFile.txt";
int main()
{
string Text;
if(!ReadText(Text))
{
cout << "Nie mozna odczytac pliku";
}
else
{
Text = "Nowy Tekst";
if(!WriteText(Text))
cout << "Nie udało sie zapisac do pliku";
};
_getch();
return 0;
};
bool WriteText(string& Text)
{
HANDLE HFile;
DWORD FileSize = Text.size()-1,
ReadState;
HFile = CreateFile(FilePath.c_str(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL );
if(!HFile)
return false;
if(!WriteFile(HFile, &Text, FileSize, &ReadState, NULL))
return false;
CloseHandle(HFile);
};
bool ReadText(string& Out)
{
HANDLE HFile;
DWORD FileSize, ReadState;
HFile = CreateFile(FilePath.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL );
if(HFile == INVALID_HANDLE_VALUE)
return false;
FileSize = GetFileSize(HFile, NULL);
if(!ReadFile(HFile, &Out, FileSize, &ReadState, NULL))
return false;
CloseHandle(HFile);
};
Niestety program źle odczytuje i zapisuje dane (nie zastępuje w pliku TestFile.txt napisu Stary Tekst na Nowy tekst)
I wywala błąd przy return 0:
Unhandled exception at 0x6a87ad4a (msvcp100d.dll) in FileLearn.exe: 0xC0000005: Access violation reading location 0x72617457.
Niestety nie mam pojęcia skąd ten błąd się tam bierze i dlaczego. Proszę o przetestowanie i pokazanie błędów, oraz wyjaśnienie co jest nie tak.
Z góry dziękuje i pozdrawiam ;)