| Planet-Quellcodes.de · Regeln/Impressum |
Hilfe
Suche
Chat
Mitglieder
Kalender
|
| Herzlich Willkommen. ( Einloggen | Registrieren ) | erneutes Übersenden der Registrierungs-Mail |
![]() ![]() |
| ZENeca |
geschrieben am: 18.03.2009, 20:14
|
|
Gruppe: Mitglieder Beiträge: 5 Mitglieds-Nr.: 730 Mitglied seit: 18.03.2009 |
...und nicht mal das Richtig
Hallo liebe Gemeinde, weia liegt der letzte Eintrag lang zurück aber: Versuch macht kluch. Mir will es nicht gelingen auch nur irgend eine Exception außerhalb der IDE richtig anzuzeigen, geschweige denn abzufangen. Probiert habe ich VCL Exceptions (EdivZero) und auch selbst geschriebene. Außerhalb der IDE bekomme ich immer nur die Meldung: Unbekannter Softwarefehler (0x...) in Anwendung an Stelle 0x.... ist aufgetreten Innerhalb der IDE bekomme ich die richtige Meldung angezeigt, aber die catch-Squenz will er auch nicht abarbeiten Muß ich noch irgend etwas anderes in der Entwicklungsumgebung deaktivieren, daß in der Laufzeit (ohne IDE) keine Meldung aufpoppt? Ich benutze Version BCB5 – Enterprise würde mich um eine paar erhellende Gedanken sehr freuen. |
| Merlin |
geschrieben am: 18.03.2009, 21:43
|
|
Gruppe: Mitglieder Beiträge: 172 Mitglieds-Nr.: 376 Mitglied seit: 17.05.2005 |
Ok, dann zeige mal den Code.
|
| NetPanther |
geschrieben am: 18.03.2009, 23:45
|
||
![]() Administrator Gruppe: Administratoren Beiträge: 7.696 Mitglieds-Nr.: 1 Mitglied seit: 29.08.2004 |
Guten Abend, generell musst du zwischen Debug Build und Release Build unterscheiden. Ersteres ist in der Regel etwas geschwätziger, was Fehler und Ausnahmen anbelangt. Ich habe keinen Borland C++Builder 5 vorliegen, aber in der Regel kann man den gewünschten Typ vor dem Bauen des Projekts im Build Manager einstellen. Für die allgemeine Verwendung von Exceptions gibt es sogenannte Kompiler-Direktiven. Mit diesen kannst du die Fehlerbehandlung auf Wunsch komplett abschalten, damit der Benutzer deiner Anwendung gar keine Fehlermeldungen mehr angezeigt bekommt. Auch diese Option findest du in der Konfiguration des Borland C++Builder. Wie in der Entwicklungsumgebung mit Ausnahmen verfahren wird, ist - oh Wunder - ebenfalls Einstellungssache. Schau mal durch die Optionen deiner IDE, dort wirst du die gewünschte Arbeitsweise detailliert festlegen können (z.B. bei Fehlern nicht anhalten, sondern einfach fortfahren). Das Abfangen von Fehlern an sich ist kein Hexenwerk und mit wenigen Handgriffen erledigt:
Ansonsten kann ich mich nur Merlin anschließen. Zeig uns deinen bisherigen Code und wir werden schauen, wo das Problem seine Wurzel hat. MfG -------------------- :: NetPanther :: NetPanther@gmx.net :: Website :: IRC Channel: #NetPanther ::
Das Leben ist eine Beta. Nichts ist vollkommen. |
||
| ZENeca |
geschrieben am: 20.03.2009, 02:13
|
||
|
Gruppe: Mitglieder Beiträge: 5 Mitglieds-Nr.: 730 Mitglied seit: 18.03.2009 |
Erst mal besten Dank für die schnelle Reaktion. Meinst du mit Debug- Release Version die Option Debug oder endgültige Version? aber erst mal zu deinem Beispiel: Oh Wunder, oh Staun: dat funktioniert!?! (ich vermute mal, daß deine beiden breaks ein Versehen sind) Mein Testprogramm sah nicht viel anders aus, einzig wesentlicher Unterschied ist, daß meins eine Konsolenanwendung ist, gibt's da irgend welche Unterschiede? ...oder ist mir etwas anderes entgangen?
Beitrag bearbeitet von ZENeca am 20.03.2009, 02:18 |
||
| Muetze1 |
geschrieben am: 20.03.2009, 16:58
|
![]() Gruppe: Moderatoren Beiträge: 561 Mitglieds-Nr.: 4 Mitglied seit: 31.08.2004 |
Hallo!
Binde doch mal bitte die SysUtils.hpp als erstes Include ein und erstelle das Projekt erneut. Gruss, Muetze1 -------------------- |
| ZENeca |
geschrieben am: 20.03.2009, 17:39
|
|
Gruppe: Mitglieder Beiträge: 5 Mitglieds-Nr.: 730 Mitglied seit: 18.03.2009 |
Hallo Muetze,
besten Dank für den Tip, hat aber leider nichts gebracht :( ...was auch ein bisschen eigenartig ist, ist die Tatsache, daß er beim Ausführen drei "unknown Exceptions" auslöst. Zwei mal 0x94 (beide an der gleichen Stelle) und dann noch eine 0x27 |
| Merlin |
geschrieben am: 20.03.2009, 18:17
|
|
Gruppe: Mitglieder Beiträge: 172 Mitglieds-Nr.: 376 Mitglied seit: 17.05.2005 |
Hallo,
mich würde mal das ASM - Listing interessieren. Dort sieht man wenigstens mal was er rausschreibt und ob er einen Handler an FS:[0] hängt, wie er try umsetzt usw. Kann aber durchaus ein Konfigurationsproblem sein. Ich kenne den BCB nicht wirklich. (bevor ichs vergesse, bitte die Codes der unabgefangenen Exceptions nicht Auspunkten). Gruß, Merlin Beitrag bearbeitet von Merlin am 20.03.2009, 18:42 |
| Merlin |
geschrieben am: 21.03.2009, 11:48
|
|
Gruppe: Mitglieder Beiträge: 172 Mitglieds-Nr.: 376 Mitglied seit: 17.05.2005 |
Und wenns geht auch mal catch (...), also ein catch all probieren.
|
| ZENeca |
geschrieben am: 22.03.2009, 18:55
|
||
|
Gruppe: Mitglieder Beiträge: 5 Mitglieds-Nr.: 730 Mitglied seit: 18.03.2009 |
bin mir jetzt nicht so sicher was du sehen willst, leider kann man keine Bilder anhängen, so mußte ich einen gewöhnlichen Dissassambler bemühen und das ist nicht ganz so übersichtlich, aber ich hoffe du findest die Info nach der du suchst ....catch(...) hab ich auch probiert, ändert aber leider nichts, habe auch das Gefühl, daß er die catch-sequenz gar nicht mehr abarbeitet
falls noch irgend eine Info gewünscht wird werfde ich sie liefern, aber langsam gebe ich die Hoffnung auf, und mir graust schon vor dem Workarround bei meiner komplexen Applikation Beitrag bearbeitet von ZENeca am 22.03.2009, 18:56 |
||
| Merlin |
geschrieben am: 23.03.2009, 02:22
|
|
Gruppe: Mitglieder Beiträge: 172 Mitglieds-Nr.: 376 Mitglied seit: 17.05.2005 |
Hallo,
ersetze mal try durch __try und catch (...) durch __except (EXCEPTION_EXECUTE_HANDLER). Dann sollte das funktionieren, glaube ich. Gruß, Merlin. Beitrag bearbeitet von Merlin am 23.03.2009, 02:25 |
| ZENeca |
geschrieben am: 24.03.2009, 11:30
|
|
Gruppe: Mitglieder Beiträge: 5 Mitglieds-Nr.: 730 Mitglied seit: 18.03.2009 |
warum habe ich denn von dem letzten Beitrag keine Mailmeldung bekommen?!?!
...hätte ich ja lange warten können *grummel sehr cool dein Lösungsansatz, hab's gerade probiert und das klappt. Wie bist Du den darauf gekommen, War das reine Erfahrung oder analytische Fähigkeit? Aber ich war auch nicht untätig: Habe mich mit der Entwicklungsumgebung herumgeärgert und's auf anderen PCs versucht und gerade hat's dann doch geklappt Man muß beim Anlegen des Projektes mit dem Konsolenexperten die Option "VCL verwenden" anwählen der Hilfetext gibt leider keine richtige Auskunft was dann genau anders läuft z.B. heißt es, daß die Linkeroptionen anders gesetzt werden, doch beim Vergleich habe ich keinen Unterschied gefunden, dann ...mom der Text VCL verwenden: Erstellt eine DLL, die VCL-Komponenten enthalten kann. Diese Option steht nur für C++-Quellmodule zur Verfügung. Mit dieser Option wird die Datei VCL.h einbezogen und der Startcode sowie die Linker-Optionen werden geändert, um Kompatibilität zu den VCL-Objekten zu erreichen. "Erstellt eine DLL", die VCL-Komponenten "enthalten kann" was ist das für ein Text, außerdem habe ich keine neue DLL gefunden hmm. jetzt noch die Frage an die Builderfreaks: Es wäre noch schön zu wissen, ob ich die Einstellung nachträglich vornehmen kann oder, ob ich das gesamte Projekt neu anlegen muß? und jetzt vielleicht noch die Info für was das alles gut war, bzw. gut sein wird. Ich denke zwar, daß das für euch Hardcoreprogrammierer nicht wirklich interessant ist, da sich die Software genau an die Leute richtet die nicht programmieren aber abstrahieren können, aber eine Gelegenheit Webung dafür zu machen möchte ich auch nicht auslassen ...und keine Sorge, ist ein Open-Source Projekt Oksimo Website (ist noch im Aufbau) Beitrag bearbeitet von ZENeca am 24.03.2009, 11:32 |
| Muetze1 |
geschrieben am: 24.03.2009, 18:46
|
![]() Gruppe: Moderatoren Beiträge: 561 Mitglieds-Nr.: 4 Mitglied seit: 31.08.2004 |
Hallo!
Du könntest nachträglich natürlich die Spare Libs etc direkt in der Projektdatei ändern, aber das wäre recht aufwendig. Grundsätzlich besteht dein Problem auch nur, da du ja versuchst VCL Objekte zu handhaben (die Exceptions der VCL sind VCL Objekte und EConvertError ist eine solche). Wenn du die reine STL bzw. C Funktionen nutzen würdest, dann hättest du auch kein Problem und könntest auch die C++ Exceptions ordentlich handeln. Aber nun gut, das Problem ist ja nun gelöst. Grundsätzlich ist es aber nicht so einfach zu durchschauen beim BCB. Gruss, Muetze1 -------------------- |
![]() |
![]() ![]() |