AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit
Thema durchsuchen
Ansicht
Themen-Optionen

exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit

Ein Thema von joehd · begonnen am 4. Feb 2024 · letzter Beitrag vom 4. Feb 2024
Antwort Antwort
Seite 1 von 2  1 2      
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
109 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit

  Alt 4. Feb 2024, 12:30
Hallo !
also ich habe ein Programm erstellt das lief normal ... Dann habe ich weil ich dachte ich bin schneller die Forms händisch bearbeitet. Felder Hinzugefügt und so ... ( dumme Idee )
Jetzt habe ich beim ausführen den obigen Fehler...
Wie finde ich das Tedit welches nicht oder nicht richtig definiert ist ?
Ich habe die Adresse AD91E gab es nicht mal ne funktion in der IDE wo ich das finden konnte ?
Ich suche schon stunden lang die Formulare durch zahlenmäßig sind alle Tedit da .. ( Anzahl wie auf dem Form )
Wenn ich syntaxcheck mache alles tipitopi
wenn ich compiliere alles topi beim Ausführen crash ...

Verzweiflung macht sich breit ...
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit

  Alt 4. Feb 2024, 12:35
Vor Während dem Laden der DFM registriert der DFM-Loader bekannte Klassen (anhand der Typen aller Published-Felder der Klasse, inkl. der Vorfahren der Form)
Delphi-Referenz durchsuchenRegisterClass

Gibt es für eine Klasse in der DFM keine Registrierung (entweder von dir oder dem DFM-Loader), dann kann der String des Klassennamen nicht in den Klassentyp (TComponentClass) übersetzt werden.



PS: Man mag es nicht glauben, aber Strg+C funktioniert fast überall (Dialoge/Fehlermeldungen und auch in de LogMeldungen)
und dann hier via Strg+V ohne Schreibfehler als Text hier rein kopieren.
$2B or not $2B

Geändert von himitsu ( 4. Feb 2024 um 12:37 Uhr)
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
109 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit

  Alt 4. Feb 2024, 12:45
Vor Während dem Laden der DFM registriert der DFM-Loader bekannte Klassen (anhand der Typen aller Published-Felder der Klasse, inkl. der Vorfahren der Form)
Delphi-Referenz durchsuchenRegisterClass

Gibt es für eine Klasse in der DFM keine Registrierung (entweder von dir oder dem DFM-Loader), dann kann der String des Klassennamen nicht in den Klassentyp (TComponentClass) übersetzt werden.



PS: Man mag es nicht glauben, aber Strg+C funktioniert fast überall (Dialoge/Fehlermeldungen und auch in de LogMeldungen)
und dann hier via Strg+V ohne Schreibfehler als Text hier rein kopieren.
Hi Himitsu
sorry das Problem dahinter habe ich glaube ich schon verstanden ... Aber wo finde ich die Classen die er registrieren möchte und nicht kann... Vielleicht war meine Frage auch etwas doof gestellt.

Und was meinst du mit SRG-C funktioniert überall ? das ist klar aber was bringt mir das kopieren so ähnlich habe ich das ja gemacht aber halt irgend was auch falsch ...

Also ich suche und bearbeite die Textansicht des Forms ... als Ergänzung

und wo finde ich die " LogMeldungen" ?
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof

Geändert von joehd ( 4. Feb 2024 um 12:48 Uhr)
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
109 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit

  Alt 4. Feb 2024, 12:49
Meinst du die IDE ausgabe beim Compilieren ?
Da steht kein Fehler drinn.
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof

Geändert von joehd ( 4. Feb 2024 um 13:31 Uhr)
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
704 Beiträge
 
Delphi 12 Athens
 
#5

AW: exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit

  Alt 4. Feb 2024, 13:10
Hallo !
also ich habe ein Programm erstellt das lief normal ... Dann habe ich weil ich dachte ich bin schneller die Forms händisch bearbeitet. Felder Hinzugefügt und so ... ( dumme Idee )
Jetzt habe ich beim ausführen den obigen Fehler...
Wie finde ich das Tedit welches nicht oder nicht richtig definiert ist ?
Ich habe die Adresse AD91E gab es nicht mal ne funktion in der IDE wo ich das finden konnte ?
Ich suche schon stunden lang die Formulare durch zahlenmäßig sind alle Tedit da .. ( Anzahl wie auf dem Form )
Wenn ich syntaxcheck mache alles tipitopi
wenn ich compiliere alles topi beim Ausführen crash ...

Verzweiflung macht sich breit ...
Hast Du das dfm-File direkt bearbeitet und dort Komponenten eingefügt? Ganz schlechte Idee, zumindest wenn Du nicht weist wie das component streaming im Detail funktioniert. Jedenfalls: wenn Du für eine im dfm-File manuell definierte Komponente das zugehörige Feld in der Formklasse einfügst muss das in der obersten Sektion der Klasse passieren, wo auch die von der IDE erzeugten Felder stehen. Und das Feld muss den gleichen Namen haben wie in der "Name"-Eigenschaft der Komponente im dfm-File angegeben, sonst kann der Loader die von ihm erzeugte Komponente nicht dem Feld zuweisen und Du kannst sie nicht im Kode ansprechen.

Für alle im oberen Teil der Formklasse stehenden Felder (die haben published visibility) legt der Compiler für die Formklasse eine Liste der Klassen an, die dort verwendet werden. Diese Liste verwendet der Loader um die Klassen zu den Komponenten aus dem dfm-File zu finden damit er die Objekte erzeugen kann. Wenn er die Klasse dort nicht findet schaut er in einer VCL-internen Liste nach, in die man Klassen per RegisterClass aufnehmen kann. Das passiert aber nicht automatisch!

Wenn Du also händisch Komponenten im dfm-File anlegst und das zugehörige Feld nicht published ist mußt Du
  1. in der unit Initialization für die Klasse der Komponente RegisterClass aufrufen
  2. die Loaded-Methode überschreiben und dort (nach inherited) die Komponente per FindComponent suchen und ihre Referenz dem Feld zuweisen. Die Name-Eigenschaft darf dafür nicht leer sein, denn danach sucht FindComponent.

Das lohnt sich echt nicht. Viel zu fehleranfällig.
Peter Below
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
109 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit

  Alt 4. Feb 2024, 13:22
Hast Du das dfm-File direkt bearbeitet und dort Komponenten eingefügt? Ganz schlechte Idee, zumindest wenn Du nicht weist wie das component streaming im Detail funktioniert. Jedenfalls: wenn Du für eine im dfm-File manuell definierte Komponente das zugehörige Feld in der Formklasse einfügst muss das in der obersten Sektion der Klasse passieren, wo auch die von der IDE erzeugten Felder stehen. Und das Feld muss den gleichen Namen haben wie in der "Name"-Eigenschaft der Komponente im dfm-File angegeben, sonst kann der Loader die von ihm erzeugte Komponente nicht dem Feld zuweisen und Du kannst sie nicht im Kode ansprechen.

Ja das war ne schlechte IDEE sorry mach ich nie wieder !!!!
Ich habe die die Form mit rechte Maustaste Ansicht als Text bearbeitet ...

Danke habs kappiert die ganzen Edit felder müssen natürlich auch im Type im Source stehen ... Ich dachte das macht er dann selbst ... ich bin ein Fisch ..... Ich sagte ja schon dumme Idee...
Es haben nicht 1 Tedit gefehlt sondern alle die ich selbst gemacht habe

Ich arbeite nach DANKE !!!!!

Ich schreibe zwar schon ewig Pascal und Delphi Code aber bin immer froh wenn die IDE funktioniert...
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof
  Mit Zitat antworten Zitat
joehd

Registriert seit: 8. Okt 2008
Ort: Heidelberg
109 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit

  Alt 4. Feb 2024, 13:31
Ergänzend a alles geht wieder ! uff DANK DANKE

Im Strukturfenster zeigt er an wenn was doppelt deklariert ist aber nicht wenn was fehlt könnte er ja netter weise machen !
joe
immer wenn ich was suche finde ich es hier komisch oder ?
Arbeite mit D3 D5 D2007 DXE Prof
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit

  Alt 4. Feb 2024, 14:16
Der Name der published Variablen muß nur gleich sein, da Komponenten (TComponent-Nachfahren) in ihrem Owner diese Variable setzen, welche so heißt, wie das was .Name zugewiesen wird. (aufpassen, es wird nicht auf den Typ der Variable geachtet)

Für das Laden der DFM, bzw. das Erstellen (Create) der Komponenten selbst, ist der Name egal, da dort ausschließlich die Typen wichtig sind ... egal wie viel in der DMF existiert, es muß mindestens irgendeine Variable diesen Typen besitzen (falls er nicht vorher schon registriert wurde).



z.B. echt blöd, wenn man per Hand in PAS oder DFM die "Komponente" umbenennt, aber auf der anderen Seite vergisst.
Oder wenn man z.B. eine Automatik nutzt, welche "blöde" KomponentenNamen, wie z.B. "Label1", automatisiert beim DFM-Laden umbenennen lässt (anhand der Caption, z.B. im Loaded oder SetName), aber das keine Auswirkung auf die PAS hat.
Und man dann auch noch [Ja] klickt, wenn der FormDesigner fragt "Feld **** besitzt keine entsprechende Komponente. Soll die Deklaration entfernt werden?" aka "Hab keine Kompoente mit dem Namen dieser Variable in der DFM gefunden, also weg damit".
$2B or not $2B

Geändert von himitsu ( 4. Feb 2024 um 14:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit

  Alt 4. Feb 2024, 14:27
Wenn es beim Start "deines" Programmes knallt,
dann dort der Fehlerdialog (MessageBox).
Zitat:
---------------------------
*****
---------------------------
Zugriffsverletzung bei Adresse *** in Modul '***.exe'. ********.
---------------------------
OK
---------------------------

Und wenn du das Programm im Debugger startest,
dann vorher das Fehlerfenster im Delphi,
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt ****.exe ist eine Exception der Klasse *** mit der Meldung '***' aufgetreten.
---------------------------
Anhalten Fortsetzen Kopieren Hilfe
---------------------------
sowie auch den Logeintrag im Ereignisse-Tab/Fenster.
Zitat:
Erste Gelegenheit für Exception bei ***. Exception-Klasse *** mit Meldung '***'. Prozess ***.exe (12345)



"Keine Fehler" würde ich das jetzt nicht nennen:
Zitat:
[dcc32 Warnung] getPatUnit2.pas(69): W1036 Variable 'mymemoset' ist möglicherweise nicht initialisiert worden
[dcc32 Hinweis] getPatUnit2.pas(209): H2164 Variable 'AByte' wurde deklariert, aber in 'TPatienten_Get.IdTCPClient1Work' nicht verwendet
[dcc32 Hinweis] getPatUnit2.pas(210): H2164 Variable 'Txt' wurde deklariert, aber in 'TPatienten_Get.IdTCPClient1Work' nicht verwendet
[dcc32 Hinweis] getPatUnit2.pas(211): H2164 Variable 'i' wurde deklariert, aber in 'TPatienten_Get.IdTCPClient1Work' nicht verwendet
[dcc32 Warnung] GeraeteUnit2.pas(80): W1036 Variable 'mymemoset' ist möglicherweise nicht initialisiert worden
[dcc32 Warnung] PatformUnit2.pas(51): W1036 Variable 'mymemoset' ist möglicherweise nicht initialisiert worden
[dcc32 Warnung] LagerplatzUnit2.pas(47): W1036 Variable 'mymemoset' ist möglicherweise nicht initialisiert worden
[dcc32 Warnung] EndoUnit1.pas(366): W1036 Variable 'myini' ist möglicherweise nicht initialisiert worden
[dcc32 Hinweis] EndoUnit1.pas(521): H2164 Variable 'x' wurde deklariert, aber in 'TForm1.GET_PDATA_PATNRPVS' nicht verwendet
Nicht deklariert ... OK, Variable steht nutzlos im Quellcode, aber wird einfach nur nicht benutzt. (knallt wenigstens später nicht)

Aber "nicht initialisiert" ist etwas, dass sollte man niemals ignorieren.
Variable lesen, bevor ihr etwas zugewiesen wurde. (bei lokalen nicht-gemanagten Variablen, steht dann gern "Schrott" drin, also irgendwas Zufälliges)
$2B or not $2B

Geändert von himitsu ( 4. Feb 2024 um 14:31 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.081 Beiträge
 
Delphi 2009 Professional
 
#10

AW: exeption eclassnotfound in Modul Programname bei Adresse $$$$$$ klasse tedit

  Alt 4. Feb 2024, 16:49
Die Name-Eigenschaft darf dafür nicht leer sein, denn danach sucht FindComponent.
Das möchte ich nochmal betonen. Anders ausgedrückt: Wenn die einzige auf der Form platzierte Instanz einer Komponente keinen Namen hat, gibt es ebenfalls diesen Fehler. Er ist somit auch ohne DFM-Bearbeitung nur mit dem Form-Designer zu produzieren.
Janni
2005 PE, 2009 PA, XE2 PA
  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 11:25 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