Die Datei wird nicht geöffnet...
-
Hallo zusammen,
Ich weiß nicht warum, aber das will einfach nicht funktionieren:
{ CString path = "/documents/welcome.txt"; CString str1; CString *pStr1 = &str1; CStdioFile txt; try { txt.Open(path, CFile::modeRead, NULL); throw "CanNotOpen"; txt.ReadString(str1); throw "CanNotWrite"; } catch(char *msg) { MessageBox(NULL, msg, "Fehler", MB_ICONERROR | MB_OK); } pQuestionTxt = pStr1; }
Ich hab keine Erklärung dafür. Die Pfad stimmt, das hab ich schon x-mal geprüft... Das ganze soll nachher in einem Dialogfeld angezeigt werden...
Danke,
Jonny
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
??? Wenn Du eine Exception wirfst, was erwartest Du da?
-
Das genau ist mein Problem. Ich hatte das ganze erst ohne die Ausnahmebehandlung...
Da war die "Fehlermeldung" dann etwas von wegen str!=NULL.
Aber damit kann ich nichts anfangen.
-
Jochen Kalmbach schrieb:
??? Wenn Du eine Exception wirfst, was erwartest Du da?
*LOL*
@johnny: wie oft hast du schon mit Exceptions gearbeitet?
Wie Jochen schon geschrieben hat, throw wirft eine Exception. Dadurch wird der Programmablauf unterbrochen und im nächsten passenden catch weiter gemacht oder, wenns das nicht gibt, dass Programm beendet.
Und schau dir mal CFileException an
-
{ CString path = "/documents/welcome.txt"; CString str1; CString *pStr1 = &str1; CStdioFile txt; try { txt.Open(path, CFile::modeRead, NULL); txt.ReadString(str1); } catch(CFileException* ex) { char buffer[256]; ex->GetErrorMessage(buffer,256); ex->Delete(); MessageBox(NULL, buffer, "Fehler", MB_ICONERROR | MB_OK); } pQuestionTxt = pStr1; }
Probiers mal so.
-
@ Pellaeon: Dann krieg ich wieder die Expression: str!=NULL
-
Ich kann damit nichts anfangen...
-
Sofern du mit fstream arbeiten würdest guck dir hier mal mein letztes Posting an:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-135756.html
Ich weiß ja nicht was du genau erreichen willst.
-
Also ich hab jetzt die komplette Funktion nochmal geschrieben.
Mit dem Unterschied, dass kein Zeiger übergeben wird, sonder der String mittels return direkt zurückgeliefert wird. Warum es jetzt klappt und vorher nicht, weiß ich nicht. Aber hauptsache es klappt!!!
Danke an alle!!!
Gruß,
Jonny
-
Jonny 50 schrieb:
Also ich hab jetzt die komplette Funktion nochmal geschrieben.
Mit dem Unterschied, dass kein Zeiger übergeben wird, sonder der String mittels return direkt zurückgeliefert wird. Warum es jetzt klappt und vorher nicht, weiß ich nicht. Aber hauptsache es klappt!!!
Danke an alle!!!
Gruß,
JonnyWar das eine Funktion, wo du einen Zeiger von str1 zurück gibst?
Falls ja, dann solltest du dich mal über die Gültigkeit von Objekten informieren. Nach dem Verlassen der Funktion werden alle lokalen Objekte zerstört!! Dadurch wird dein zurückgegebener Zeiger ungültig!!!
Daher wird der Fehler gekommen sein.
Außerdem einen String kannst du meist locker by Value zurück geben. Jede vernünftige String-Implementierung hat intern einen Referenzzähler beim Kopieren, bevor da wirklich mal der gesamte Text kopiert wird.