Quidoff
Lieutenant
- Registriert
- Feb. 2005
- Beiträge
- 897
Hallo an alle Programmierer,
ich spiele gerade etwas mit dem Einlesen von Dateien mithilfe der Windows API herum und habe da ein Problem, was wohl eher mit Pointern zu tun hat.
Aber hier erstmal der Code:
Ich will also nichts weiteres machen, als den Inhalt der "readme.txt" (Datei existiert) in der Konsole anzeigen zu lassen. Leider bekomme ich beim Starten einen Laufzeitfehler, der das Programm beendet.
Zeile, die den Fehler verursacht: cout << buffer;
Irgendwie wird der Inhalt nicht in buffer gespeichert oder wieder verworfen, denn wenn ich die auskommentierte Zeile wieder einkommentiere, dann sehe ich den Inhalt der readme.txt bevor das Programm abstürzt.
Bestimmt ist der Fehler lächerlich, aber ich sitze jetzt schon lange daran und finde ihn nicht.
ich spiele gerade etwas mit dem Einlesen von Dateien mithilfe der Windows API herum und habe da ein Problem, was wohl eher mit Pointern zu tun hat.
Aber hier erstmal der Code:
Code:
#include <iostream>
#include <windows.h>
#include <conio2.h>
using namespace std;
HANDLE hFile;
bool readFile(char* filename, char* strFileContent);
int main() {
char *buffer;
if(readFile("readme.txt", buffer)) cout << buffer;
getch();
return 0;
}
bool readFile(char* strFileName, char* strFileContent) {
bool success = false;
hFile = CreateFile(strFileName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if(hFile != INVALID_HANDLE_VALUE) {
DWORD dwFileSize;
dwFileSize = GetFileSize(hFile, NULL);
if(dwFileSize != 0xFFFFFFFF) {
strFileContent = new char[dwFileSize+1];
if(strFileContent!=NULL) {
DWORD dwRead;
if(ReadFile(hFile, strFileContent, dwFileSize, &dwRead, NULL)) {
strFileContent[dwFileSize] = '\0';
//cout << strFileContent;
success = true;
}
}
}
}
CloseHandle(hFile);
return success;
}
Zeile, die den Fehler verursacht: cout << buffer;
Irgendwie wird der Inhalt nicht in buffer gespeichert oder wieder verworfen, denn wenn ich die auskommentierte Zeile wieder einkommentiere, dann sehe ich den Inhalt der readme.txt bevor das Programm abstürzt.
Bestimmt ist der Fehler lächerlich, aber ich sitze jetzt schon lange daran und finde ihn nicht.