Autor Beitrag
SteheAufDerLeitung
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 104



BeitragVerfasst: Di 30.10.07 09:35 
Guten Morgen!!

Wenn ich die .exe ausführe, erscheint ein Dialogfenster in dem steht: Klasse nicht registriert. Es ist kein Hinweis auf eine exception vorhanden. Was bedeutet das generell?

Ich habe folgende Vermutung: Da ich auf eine Datenbank zugreifen möchte, die auf dem Rechner nicht installiert ist, scheint diese Klasse nicht registriert zu sein. Doch wie fange ich dies ab? Mit "if tClassType = nil" hatte ich leider keinen Erfolg..

Vielen Dank schonmal!

Sebastian
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 30.10.07 10:16 
Ist ein Fehler in der EXE, dass zu einer in einem Formular genutzten Klasse keine Typ-Informationen bei der VCL hinterlegt wurden. Hier hat Borland volle Arbeit geleistet: Zumindest der Klassenname der fehlenden Klasse wäre hilfreich gewesen ^^

Oftmals wird dieser Fehler durch eine fehlende Unit im Interface-Bereich verursacht, deren Fehlen zwar kein Beinbruch für die Korrektheit des Compilates ist, den Linker aber so aus dem Tritt bringt, dass bestimmte Klassen nicht bei der VCL angemeldet werden.

Wenn Du weißt, welche Klasse es betrifft, kannst Du diese mit RegisterClass VOR dem Instantiieren des Forms bei der VCL registrieren.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Di 30.10.07 11:24 
user profile iconBenBE hat folgendes geschrieben:
Hier hat Borland volle Arbeit geleistet: Zumindest der Klassenname der fehlenden Klasse wäre hilfreich gewesen

Das sieht mir mehr nach einer COM-Fehlermeldung aus. Denn die entsprechende VCL Fehlermeldung wäre "Klasse %s nicht gefunden" und da steckt der Klassenname drinnen => %s.


Zitat:
Oftmals wird dieser Fehler durch eine fehlende Unit im Interface-Bereich verursacht, deren Fehlen zwar kein Beinbruch für die Korrektheit des Compilates ist, den Linker aber so aus dem Tritt bringt, dass bestimmte Klassen nicht bei der VCL angemeldet werden.

Da ist wohl nicht die Schuld des Linkers, sondern eher die exzessive Nutzung der initialization Blöcke, die auch das Smart-Linking (entfernen von Totem/Ungenutzen Code) aushebeln.

Wenn es sich um die VCL-Meldung handeln würde, sollte man überprüfen, ob alle Komponenten auf dem Formular auch eine Feld-Deklaration in der Formular/Frame/DataModule-Klasse besitzen. Ist diese nicht vorhanden kann das Streaming-System beim Laden die Klasse wegen nicht gefundener Typinformationen nicht erstellen.

_________________
Ist Zeit wirklich Geld?
SteheAufDerLeitung Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 104



BeitragVerfasst: Di 30.10.07 11:54 
und wie bekomme ich dann raus, welche Klasse es ist? Ich habe eine vorhanden Lib verwendet, um auf diese DB zuzugreifen. Allerdings ist diese DB wie gesagt nicht auf dem Rechner vorhanden. Die Lib hab ich in Units(Interface) eingebunden, die Klassen für die Zugriffsvariablen in type\public hinterlegt.. Ist das vielleicht ne EOLEException?

Ich dank euch..