#include "fstream.h"
-
Wollte so fstream includen um
CFile File
File.Open(...)
....
...
..
FileWrite(...)nutzen zu können. Klappt aber nicht.
Gibt mir Fehlermeldung include Datei kann nicht geöffnet werden.
Weiß jemand warum? Mache mit mfc dialogbasiertes Projekt.
-
Die Include-Datei heißt <fstream> und nicht <fstream.h>. Aber dort wirst du auch kein CFile finden, die liegt in der afx.h
MfG SideWinder
-
Ok vielen dank das klappt. Wollte jetzt folgenden Code einbinden und ern findet auch keinen Fehler. Aber wenn ich dann den Button drücke um die Aktion auszuführen gibt er an
"Unbehandelte Ausnahme bei 0x0049c9e5 in konvertieren.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0x0003065c."void CkonvertierenDlg::OnBnClickedButton1() { CFile File; File.Open("zBuffer.dat",CFile::modeCreate | CFile::modeWrite); int anzahlx=3, anzahly=3; float hoehenwert [3000] [100]; for (int i =0; i < anzahlx ; i++) { for (int i2 =0; i2 < anzahly ; i2++) { if (i < 333 || i> 666) { hoehenwert [i] [i2] = 10; } else { hoehenwert [i] [i2] = 6; } } } File.Write(&anzahlx,sizeof(anzahlx)); File.Write(&anzahly,sizeof(anzahly)); File.Write(&hoehenwert,sizeof(hoehenwert)); File.Close(); }
Da ich c++ Anfänger bin kann ich damit gar nichts anfangen. Ist viel schlimmer wie ein Fehler beim debugen
-
Ok weiß jetzt dass es daran lag weil mein array zu gross war [1000] [100]. Nun frage ich mich aber warum dachte die Dinger können so gross sein wie ich will. Wo sind da die Grenzen?
-
Du legst deine Arrays am Stack an, der hat eine maximale Größe. Wenn du größere (also beliebig Große Arrays je nachdem wieviel dir das OS gibt (RAM + Auslagerungsdatei + ...) benötigst musst du sie am Freispeicher (Heap) anlegen:
float* heapArr = new float[1000000]; // heapArr verwenden // Sachen am Freispeicher müssen auch wieder freigegeben werden wenn du fertig bist delete[] heapArr;
MfG SideWinder
-
Aha, sehr intteresant, danke
-
Zieh dir das rein: http://tutorial.schornboeck.net/dyn_speicher.htm
MfG SideWinder