WINAPI Zapis i odczyt - problem

0

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 ;)

0
  1. brak return true; w obu funkcjach.
  2. ReadText powinien ustawić rozmiar napisu Out.resize(FileSize);

1 użytkowników online, w tym zalogowanych: 0, gości: 1