Kampfkartoffel Geschrieben 26. September 2006 Geschrieben 26. September 2006 -- Visual Studio 2005 / Programm in C++ -- Hallo an Alle, ich habe zur Zeit folgendes Problem, ich habe ein Programm, dass im Debug-Modus einwandfrei läuft, aber im Release-Modus sofort einen Fehler ausspuckt. Mein Code: int Cursor=0; sTemp=""; sTemp=GetCommandLine(); // Eigenpfad bestimmen Cursor=sTemp.ReverseFind('\\'); //Zeichen bis zur Exe-Datei bestimmen sTemp=sTemp.Mid(0,Cursor+1); // Exe-Datei rausschneiden, so dass nur der // reine Pfad übrig bleibt SetInipfad(sTemp.Mid(1,Cursor)); // Pfadadresse speichern sTemp=GetInipfad()+"Pfad.ini"; // Dateipfad erzeugen stream_r1=_fsopen(sTemp,"r",_SH_DENYWR); // Dateipfad öffnen fgets(cTemp,290,stream_r1); // Auslesen der ersten Zeile in der Datei In der Release-Version bekomme ich im fgets-Schritt die Fehlermeldung, dass Microsoft Visual Studio C Runtime Library in der Exe-Datei einen fatalen Fehler entdeckt hat und ich debuggen soll. Aber in der reinen Debug-Version läuft das Programm ohne Probleme und führt die Anweisungen korrekt aus. Zur Info: char cTemp[300]; Kann mir jemand auf die Sprünge helfen? Mit Dank im voraus KK Zitieren
Klotzkopp Geschrieben 27. September 2006 Geschrieben 27. September 2006 Das ist ein schönes Beispiel für "optimistischen Code" - du gehst einfach davon aus, dass alles klappt, weit und breit ist keine Fehlerbehandlung zu sehen In der Release-Version bekomme ich im fgets-Schritt die Fehlermeldung, dass Microsoft Visual Studio C Runtime Library in der Exe-Datei einen fatalen Fehler entdeckt hat und ich debuggen soll.Dann ist vermutlich _fsopen fehlgeschlagen. Das fängt dein Code nicht ab. Lass dir die Zwischenergebnisse mit MessageBox ausgeben, um die Ursache einzukreisen. Ich vermute, dass GetCommandLine etwas anderes liefert, als du erwartest. Zitieren
Kampfkartoffel Geschrieben 27. September 2006 Autor Geschrieben 27. September 2006 Hallo Klotzkopp, danke für Deine Antwort, sich die Einzelschritte über MessageBoxen ausgeben zu lassen ist eine gute Idee. Ich dachte, dass die Release-Version die Befehle gleich abarbeitet, wie die Debug-Version, werde dass aber offenkundig doch überprüfen müssen. Es wäre nett, wenn Du mir noch mitteilen könntest, wie man z.B. Fehler bei fsopen abfangen kann. Schreibt man eine Assert-Anweisung, bzw. try-, Catch-Anweisung oder wie geht man vor? Gruß KK Zitieren
Kampfkartoffel Geschrieben 27. September 2006 Autor Geschrieben 27. September 2006 Mein Problem hat sich erledigt. Der Fehler lag darin, das die Pfad.ini zwar in dem Debug-Verzeichnis lag, aber nicht in dem Release-Verzeichnis. Ich habe mir zunächst eine MessageBox ausgeben lassen, die mir noch einmal einträgt, mit welchem String (sTemp) die Datei geöffnet werden soll. Der String passte und war fehlerlos. Dann habe ich das Datei-Öffnen so abgefangen, dass ich fragte ob es NULL sei. Dem war so. Als ich dann wie gesagt ins Release-Verzeichnis ging, stellte ich fest, dass keine Pfad.ini da war. Seit ich eine erstellt habe, läuft auch die Release-Version anstandslos. War jetzt wahrscheinlich ein dämlicher Fehler, der mich jedoch bezüglich der Aufmerksamkeit von Fehlerquellenabfragungen weitergebracht hat. Dank Dir Klotzkopp Gruß KK Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.