Announcement

Collapse
No announcement yet.

Error in COM-Object

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Error in COM-Object

    Delphi 5<br>
    Hallo, in meiner Anwendung greife ich auf grosse Datenmengen einer Oracle-Datenbank zu. Aus Performansgründen benutze ich die "OO4O" Objekte von Oracle. Dies sind COM-Server, welche ich auch problemlos eingebunden habe.
    Nun habe ich festgestellt, wenn ich auf die Objecte zugreife und der Oracle-Server oder die Netzverbindung abbricht, ist ohne irgend eine Fehlermeldung mein Programm vom Bildschirm verschwunden ???????? <br>
    Was gibt es für einen Ansatz, einen solchen Fehler abzufangen?

    Helmut Schumacher

  • #2
    Hallo,

    ich gehe einmal davon aus, dass es sich bei OO4O um In-Process-Server (COM-Objekte als DLL) handelt, die in den eigenen Adressraum der Anwendung geladen werden. Wenn eine Typbibliothek für OO4O zur Verfügung steht und von Delphi importiert wurde, sollte alle Interface-Methoden als <b>safecall</b> gekennzeichnet werden. Delphi prüft dann automatisch, ob über die offizielle COM-Schnittstelle eine Fehlerbedingung gemeldet wurde.

    Nach den COM-Regeln darf keine Interface-Methode <b>niemals</b> eine intern ausgelöste Exception zum Aufrufer durchreichen, sondern muss diese als OLE-Fehler verpacken. Wenn das eigene Programm aber völlig kommentarlos terminiert, sieht das so aus, als ob die OO4O-Objekte diese Grundregel nicht beachten oder die OO4O-Objekte den Prozess gezielt abschiessen

    Comment

    Working...
    X