Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Klasse nicht registriert!?
SteheAufDerLeitung - Di 30.10.07 09:35
Titel: Klasse nicht registriert!?
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 - 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.
AndyB - Di 30.10.07 11:24
BenBE 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.
SteheAufDerLeitung - 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..
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!