| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
netrus TalkING. Freak

Anmeldedatum: 09.12.2008 Beiträge: 91 Studiengang: AIW
|
Verfasst am: So, 21. März. 10, 12:55 Titel: |
|
|
Das Problem ist, wenn ich das richtig sehe, dass eine Exception "aus read() rausfliege" muss, und auf dieser Ebene eingefangen werden kann (ist das eigentlich in der Aufgabe spezifiziert?). Das war in deinem geposteten Code schon der Fall, nur aus meiner Sicht unnötig kompliziert (einfangen und wieder wegwerfen) und dadurch fehleranfällig. So wie du es gepostet hast, sollte es aus meiner Sicht auch gehen. Wenn der Compiler sich beschwert, aber der UnitTest läuft, fängst du in deinem Programm die Exception vielleicht auf der falschen Ebene auf? Überprüf mal, wo du in deinem Programm read() aufrufst, und ob du da die Exception fängst (das war zumindest bei mir das Problem).
Viel Erfolg! |
|
| Nach oben |
|
 |
hayholy TalkING. Newbie


Anmeldedatum: 26.07.2009 Beiträge: 23 Studiengang: AIW
|
Verfasst am: So, 21. März. 10, 13:29 Titel: |
|
|
Also da der Compiler sich beschwert komme ich gar nicht zum Unittest. Read() wird aufgerufen und die Exception steht ja auch da drin. Hmh, dachte nur, dass vielleicht mein Code falsch ist...
In der Main() muss man keine Fehler abfangen, oder? |
|
| Nach oben |
|
 |
yoshi252 TalkING. Newbie


Anmeldedatum: 19.03.2005 Beiträge: 29 Studiengang: IIW
|
Verfasst am: Mo, 22. März. 10, 03:47 Titel: |
|
|
| hayholy hat Folgendes geschrieben: | | Ich habe es jetzt noch ein paar mal versucht umzustellen, aber ich bekomme immer wieder den gleichen Fehler beim Unittest oder einen Fehler beim Kompilieren. |
Die Ausgabe | Code: | | UnitTest.cpp:66: error: Failure in imageData: istnichtda: Unhandled exception: St9ex |
sieht nicht nach einem Compilerfehler, sondern nach einem Laufzeitfehler vom Unittest aus.
Oder bekommst du noch einen Fehler vom Compiler dazu? Wenn ja, dann poste den auch mal hier!
Zu deinem code | Code: | try//START TRY
{
File.exceptions(ios::failbit | ios::badbit);
ifstream testFile (dateiname.c_str());
if (testFile.is_open())
{
cout << "ok... file found!" << endl;
}
else
{
cerr << "Error opening file!" << endl;
throw XImageFile("Error"); //Hier kommt die Fehlermeldung des Compilers
}
}
catch (XImageFile& ImageFileError)
{
[...]
}
|
Diese ganzen try..catch Dinge brauchst du in der Datei nicht. Ersetz es einfach durch | Code: | File.exceptions(ios::failbit | ios::badbit);
ifstream testFile (dateiname.c_str());
if (testFile.is_open())
{
cout << "ok... file found!" << endl;
}
else
{
cerr << "Error opening file!" << endl;
throw XImageFile("Error"); //Hier kommt die Fehlermeldung des Compilers
} |
|
|
| Nach oben |
|
 |
hayholy TalkING. Newbie


Anmeldedatum: 26.07.2009 Beiträge: 23 Studiengang: AIW
|
Verfasst am: Mo, 22. März. 10, 10:02 Titel: |
|
|
| yoshi252 hat Folgendes geschrieben: | | hayholy hat Folgendes geschrieben: | | Ich habe es jetzt noch ein paar mal versucht umzustellen, aber ich bekomme immer wieder den gleichen Fehler beim Unittest oder einen Fehler beim Kompilieren. |
Die Ausgabe | Code: | | UnitTest.cpp:66: error: Failure in imageData: istnichtda: Unhandled exception: St9ex |
sieht nicht nach einem Compilerfehler, sondern nach einem Laufzeitfehler vom Unittest aus.
Oder bekommst du noch einen Fehler vom Compiler dazu? Wenn ja, dann poste den auch mal hier!
|
Vielen Dank! Bisher habe ich einen Laufzeitfehler von Unittest bekommen (s.o.). Wenn ich jetzt deinen Code nutze,
| Code: | | throw XImageFile("Error"); |
dann bekomme ich einen Compilerfehler (war vorher auch schon da):
Fehlermeldung an der Stelle von throw XImageFile:
Unbehandelte Ausnahme bei 0x7748b727 in praktikum.exe: Microsoft C++-Ausnahme: XImageFile an Speicherposition 0x002ef704..
Wenn ich ihm die richtige Datei gebe (tuvision.pgm), dann funktioniert alles. Wenn ich ihm die falsche Datei gebe (z.B. tuvision1.pgm), dann gibt es Compilerfehler. Also wird der Fehler irgendwie nicht richtig abgefangen, oder? Hast du eine Idee was da noch falsch sein könnte. Trotz nun bestandenem Unittest wäre es ja ganz schön, wenn ich den Compilerfehler noch wegbekommen würde. |
|
| Nach oben |
|
 |
netrus TalkING. Freak

Anmeldedatum: 09.12.2008 Beiträge: 91 Studiengang: AIW
|
Verfasst am: Mo, 22. März. 10, 10:10 Titel: |
|
|
| Hast du denn ein try/catch Ding in deiner main(), bzw. beim Funktionsaufruf von read()? |
|
| Nach oben |
|
 |
hayholy TalkING. Newbie


Anmeldedatum: 26.07.2009 Beiträge: 23 Studiengang: AIW
|
Verfasst am: Mo, 22. März. 10, 10:28 Titel: |
|
|
| netrus hat Folgendes geschrieben: | | Hast du denn ein try/catch Ding in deiner main(), bzw. beim Funktionsaufruf von read()? |
jetzt habe ich einen try/catch-Bereich in der main() und es läuft!
Danke an euch zwei  |
|
| Nach oben |
|
 |
Lks TalkING. Newbie

Anmeldedatum: 03.10.2009 Beiträge: 17
|
Verfasst am: Fr, 18. Jun. 10, 19:54 Titel: |
|
|
Bei mir läuft alles so halbwegs, bis auf meine codierung der 100.
Meine 100 (wird ja in den unit tests überprüft) wird 1010110111 codiert und nicht 1010110101, wie es sein sollte. Jemand ne Idee woran das liegen kann? Den operator hab ich schon getestet. An dem wirds denk ich mal nicht liegen.
Grüße |
|
| Nach oben |
|
 |
dori TalkING. Newbie

Anmeldedatum: 23.01.2010 Beiträge: 7 Studiengang: AIW
|
Verfasst am: Sa, 19. Jun. 10, 12:22 Titel: |
|
|
hallo,
könnte mir vielleicht jemand sagen, wie man
die höhe und die breite aus der bilddatei ausließt?
Habe das noch nicht ganz verstanden  |
|
| Nach oben |
|
 |
Lks TalkING. Newbie

Anmeldedatum: 03.10.2009 Beiträge: 17
|
Verfasst am: Sa, 19. Jun. 10, 12:24 Titel: |
|
|
Du musst die bilddatei wie eine textdatei behandeln. Wenn du die einfach mal mit notepad o.ä. öffnest kannst du dir die ma anschaun. dann sollte das mehr oder weniger klar sein.
edit:
kann mir mal jemand seinen inhalt von m_knotQueue schicken (also zum überprüfen der richtigen reihnfolge).
also einfach mal
| Code: |
fstream test;
test.open("test.txt", ios::out);
while(!m_knotQueue.empty())
{
test << m_knotQueue.top().m_num << ", " << (int)m_knotQueue.top().color << endl;
m_knotQueue.pop();
}
test.close();
|
bis auf nen memoryleak läufts jetzt alles.
letztes edit : jetzt läuft alles |
|
| Nach oben |
|
 |
|