AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Trotz try...finally: Exception "Klasse nicht registriert"
Thema durchsuchen
Ansicht
Themen-Optionen

Trotz try...finally: Exception "Klasse nicht registriert"

Ein Thema von Mamphil · begonnen am 9. Jun 2005 · letzter Beitrag vom 9. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mamphil
Mamphil

Registriert seit: 17. Jul 2004
Ort: Garching b. München
149 Beiträge
 
Delphi 7 Professional
 
#1

Trotz try...finally: Exception "Klasse nicht registrier

  Alt 9. Jun 2005, 14:19
Hallo!

Der folgende Code wird in einem Projekt beim Starten ausgeführt. Es soll überprüft werden, ob Excel installiert ist und ggf. die entsprechenden Menüpunkte freischalten:
Delphi-Quellcode:
  // Ist Excel installiert? (zum Einlesen / Abspeichern der Spielpläne)
  // Menü-Punkte ausschalten:
  Hauptform.ImportierenXLS1.Enabled := false;
  Hauptform.ExportierenXLS1.Enabled := false;
  XLApp := TExcelApplication.Create(Self);
  try
    XLApp.Connect;
    // wenn's klappt: Menüpunkte wieder einschalten
    Hauptform.ImportierenXLS1.Enabled := true;
    Hauptform.ExportierenXLS1.Enabled := true;
  finally
    XLApp.Disconnect;
  end;
Obwohl das XLApp.Connect im try..finally-Block steht wird die folgende Exception ausgelöst wenn Excel nicht installiert ist:
Code:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt SchiriManager.exe ist eine Exception der Klasse EOleSysError aufgetreten. Meldung: 'Klasse nicht registriert'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK  Hilfe  
---------------------------
Ich habe schon hier im Forum eine Beschreibung des Fehlers gefunden (http://www.delphipraxis.net/internal...se+registriert) aber von einem Lösungsweg steht dort nichts.

Bisher dachte ich, dass ein try..-Block Exceptions abfängt und ich so darauf reagieren kann. Aber dass mir so oder so eine Fehlermeldung um die Ohren geworfen wird, ist doch sicherlich nicht Sinn der Sache...

Habt ihr eine Idee, wie ich überprüfen kann, ob Excel installiert ist, ohne dass ich mich mit dieser Fehlermeldung herumschlagen muss? Am liebsten wäre mir natürlich, wenn ihr mir erklären könnt, weshalb das try im obigen Fall nicht greift.

Vielen Dank im Voraus!
Mamphil
The laws of physics are the canvas God laid down on which to paint his masterpiece. “Leonardo Vetra” in Dan Brown’s “Angels & Demons”
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Trotz try...finally: Exception "Klasse nicht regist

  Alt 9. Jun 2005, 14:22
Ich nehme an, du hast es mittels F9 direkt aus Delphi heraus gestartet. Falls ja, geht es ziemlich wahrscheinlich beim externen Starten.

Unter Tools -> Debugger-Optionen -> Sprach-Exceptions kannst du abstellen, dass Delphi über die eigenen Exceptions benachrichtigt.

Evtl. liegt es daran, versuche es mal.
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#3

Re: Trotz try...finally: Exception "Klasse nicht regist

  Alt 9. Jun 2005, 14:22
führ doch mal dein programm von außerhalb der IDE aus, und nicht mit "Play"/F9
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Trotz try...finally: Exception "Klasse nicht regist

  Alt 9. Jun 2005, 14:23
Na es faellt schon TExcelapplication.Create auf die Nase und das steht ausserhalb des try-Blocks.
  Mit Zitat antworten Zitat
Benutzerbild von Mamphil
Mamphil

Registriert seit: 17. Jul 2004
Ort: Garching b. München
149 Beiträge
 
Delphi 7 Professional
 
#5

Re: Trotz try...finally: Exception "Klasse nicht regist

  Alt 9. Jun 2005, 14:25
Danke für den ersten Tipp!

So richtig zufrieden bin ich mit der Erklärung zwar nicht, aber ok. Ich hab's versucht.

Das Ergebnis: Die Fehlermeldung ist außerhalb der IDE kürzer
Code:
---------------------------
xxxxxxxxxx
---------------------------
Klasse nicht registriert.
---------------------------
OK  
---------------------------
Weitere Vorschläge?

[EDIT]da war inzwischen ja eine neue Antwort
Zitat von Robert Marquardt:
Na es faellt schon TExcelapplication.Create auf die Nase und das steht ausserhalb des try-Blocks.
Nein, tut es leider nicht. Wenn ich das XLApp.Connect; auskommentiere, läuft alles ohne Fehlermeldung...
[/EDIT]

Mamphil
The laws of physics are the canvas God laid down on which to paint his masterpiece. “Leonardo Vetra” in Dan Brown’s “Angels & Demons”
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: Trotz try...finally: Exception "Klasse nicht regist

  Alt 9. Jun 2005, 14:30
Afaik fängt nur ein try ... except - Block eine Exception ab, ein try ... finally nicht.

try ... finally sorgt nur dafür, dass etwas auf jeden Fall ausgeführt wird - aber es behandelt nicht die Exception. (Was nötig wäre, damit sie nicht zum Benutzer dringt, sondern abgefangen wird)

Es müsste also so sein:
Delphi-Quellcode:
try
  try
    //...
  finally
    //...
  end;
except
//...
end;
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Trotz try...finally: Exception "Klasse nicht regist

  Alt 9. Jun 2005, 14:34
Nein, also beim finally wird ein Fehler genauso abgefangen, mit dem Unterschied, das das, was im finally-Abschnitt steht immer ausgeführt wird, ob eine Exception ausgelöst wurde oder nicht.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Trotz try...finally: Exception "Klasse nicht regist

  Alt 9. Jun 2005, 14:39
Zitat von Matze:
Nein, also beim finally wird ein Fehler genauso abgefangen, mit dem Unterschied, das das, was im finally-Abschnitt steht immer ausgeführt wird, ob eine Exception ausgelöst wurde oder nicht.
Falsch

Gerade ausprobiert. Baue
Delphi-Quellcode:
  try
    MessageBeep(100 div strtoint ('0'));
  finally
  end;
in ein Event ein, und du wirst eine Exception zu Gesicht bekommen
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Trotz try...finally: Exception "Klasse nicht regist

  Alt 9. Jun 2005, 14:40
Tatsache, dann habe ich mich da geirrt...
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: Trotz try...finally: Exception "Klasse nicht regist

  Alt 9. Jun 2005, 14:45
Zitat von Matze:
Tatsache, dann habe ich mich da geirrt...
Hast du nicht.
Try finally macht exakt das, was du gesagt hasdt.
try except schluckt die Exception.

@Topic, kann es sein, dass du statisch gegen eine TypeLib kompilierst? Dann knallt's natürlich bei Start wenn diese nicht gefunden wird.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz