Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ursache finden für EResNotFound Exception (https://www.delphipraxis.net/169738-ursache-finden-fuer-eresnotfound-exception.html)

bwolf 8. Aug 2012 15:57

Ursache finden für EResNotFound Exception
 
Hi Leute,

ich habe ein (größeres) Projekt von Delphi 2009 auf Delphi XE2 umgestellt.
In diesem Zuge wurden auch die Komponenten von DevExpress auf den neuesten Stand gebracht.

Nun habe ich das Problem das beim kompilieren bzw. starten der Anwendung eine EResNotFound Exception geraised wird.
Dummerweise wird diese Exception ausgelöst, noch bevor der erste Breakpoint (ganz zu Beginn der Projekt-Datei) erreicht wird.

Wenn ich beim erscheinen der Exception auf anhalten klicke, lande ich in der Unit cxImage.pas in der Init-Sektion.
Der letzte Aufruf im Stack-Trace ist ein TCustomForm.Create (Wieso ist mir unklar, zudem Zeitpunkt wurde ja eig. noch kein Formular erzeugt.)

Über einen Tipp wie ich das besser verfolgen kann wäre ich sehr dankbar.
Danke euch!

himitsu 8. Aug 2012 16:06

AW: Ursache finden für EResNotFound Exception
 
Zitat:

Zitat von bwolf (Beitrag 1177384)
zudem Zeitpunkt wurde ja eig. noch kein Formular erzeugt.

Tja, scheinbar wird doch eines erzeugt. :zwinker:

Aber nicht alle sind immer sichtbar.

Zitat:

Zitat von bwolf (Beitrag 1177384)
Der letzte Aufruf im Stack-Trace ist ein TCustomForm.Create

Was was gibt es sonst noch im Stacktrace?

Arbeitest du mit oder ohne Laufzeitpackages?

Und wo ist dein erster Haltepunkt?
Tipp: Das BEGIN ist DPR ist eine sehr gute Stelle, denn darin werden unter anderem alle Units initialisiert. (alle Initialization-Abschnitte und alle Class-Constructor ausgeführt)
Wenn man dann noch mit Debug-Units kompiliert (also in den Projektoptionen sagt, es sollen die RTL und VCL gedebuggt werden können), dann kommt man dda auch sehr tief rein.
Dazu dann natürlich auch noch DevExpress mit Debuginfos kompilieren (wenn man von denen die Quellcodes mit gekauft hat).

bwolf 8. Aug 2012 16:18

AW: Ursache finden für EResNotFound Exception
 
Hi Himitsu,

erstmal danke für deine schnelle Antwort.

Zum Formular: Ja, irgendwo wird wohl eines erzeugt, bleibt nur noch die Frage wo...

Zum Breakpoint:
Jo genau dort habe ich Ihn ('begin' in der DPR).

Laufzeitpackages werden nicht verwendet.

Das vollständige Strack-Trace zu dem Zeitpunkt:

Zitat:

:7616d36f KERNELBASE.RaiseException + 0x54
:0059bd41 TCustomForm.Create + $10D
cxImage.cxImage
:00408954 InitUnits + $44
:004089c0 @StartExe + $44
:76d1ed6c kernel32.BaseThreadInitThunk + 0x12
:77dd377b ntdll.RtlInitializeExceptionChain + 0xef
:77dd374e ntdll.RtlInitializeExceptionChain + 0xc2

Neue Feststellung:
Ich habe das komplette Projekt nochmal erzeugt, nun hält der Debugger immerhin beim Beginn in der DRP an.
Wenn ich dann allerdings F8 drücke um zur nächsten Zeile zu gelangen, kommt die genannte Exception.
Ich habe den Eindruck das der Breakpoint tatsächlich an einer anderen stelle steht als er angezeigt wird...

Ich werde mir das morgen dann nochmal genauer anschauen und melde mich dann wieder mit hoffentlichen neuen Erkenntnissen.

himitsu 8. Aug 2012 16:30

AW: Ursache finden für EResNotFound Exception
 
Nicht F8 ... F7 ... du willst ja zur Fehlerstelle und du weißt inzwischen, daß es in diesem BEGIN knallt. :zwinker:

Ich würde mal in der Initialization der Unit cxImage suchen. (ich glaub nicht daß die schon so weit sind und den besseren Class Constructor für Initialisierungen benutzen)

bwolf 13. Aug 2012 10:40

AW: Ursache finden für EResNotFound Exception
 
Hi,

bin weiterhin auf der suche nach der Ursache des ganzen...

Also mit F7 lande ich dann inder cxImage.pas in der initialization:

Code:
initialization
  GetRegisteredEditProperties.Register(TcxImageProperties, scxSEditRepositoryImageItem);
  cxImageResourceForm := TcxImageResourceForm.Create(nil);
Wenn ich dann in in die Funktion TcxImag eResourceForm.Create(nil) gehe, komme ich in die vcl.Forms.pas in der Constructor von TCustomForm.Create - in dieser Funktion wird dann auch die Expcetion ausgelöst:

Code:
if not InitInheritedComponent(Self, TForm) then
    raise EResNotFound.CreateFmt(SResNotFound, [ClassName]);
Ich hab leider keine Idee wie ich da auf die Ursache kommen soll, würde mich über Hilfe sehr freuen.
Danke euch!

Iwo Asnet 13. Aug 2012 12:15

AW: Ursache finden für EResNotFound Exception
 
1. Weiß denn DevExpress, das es nun für XE2 kompiliert werden soll bzw. hast Du die Komponenten für XE2 auch anständig installiert?
2. Wenn ja, hast Du vorher vielleicht mit einem älteren Delphi kompiliert und ist im Suchpfad der Pfad zu den DevExpress-Sourcen?
3. Hast Du schon einen kompletten Rebuild durchgeführt, inklusive der DevExpress-Quellen?
4. Kannst Du das Problem isolieren, also ein Beispielprojekt erzeugen, das das Problem veranschaulicht?

Wie wäre es mit dem Support bei DevExpress? Die helfen immer und sind sehr kompetent.

bwolf 13. Aug 2012 12:30

AW: Ursache finden für EResNotFound Exception
 
Hi Iwo, danke für deine Antwort.

Zu 1:
Also wir haben auf X2 geupdatd und aus diesem Grund die VCL subscription von DexExpress gekauft um XE2-Kompatible Controls zu erhalten.
zu 2:
Alte Delphi-Version war 2009, allerding auf einer komplett anderen VM. Suchpfade müssten soweit alles passen, ich lande beim Debuggen ja in der entsprechenden Unit
zu 3:
Rebuild von der eigenen Anwendung habe ich probiert, von den DevExpress Komponenten allerdings nicht (wurden ja nur einmalig auf ein komplett neues System installiert - trotzdem probieren?)
zu 4.
Leider nein - habe versucht ein Mini-Projekt zu erzeugen aber da läuft natürlich alles :/

Ja ich werde DevExpress mal parallel anhauen. Bin erstmal davon ausgegangen das der Fehler auf meiner Seite liegt und wollte die nicht vorschnell nerven. Aber der Support ist super da hast du recht.

himitsu 13. Aug 2012 12:33

AW: Ursache finden für EResNotFound Exception
 
Zitat:

Zitat von bwolf (Beitrag 1178076)
Suchpfade müssten soweit alles passen, ich lande beim Debuggen ja in der entsprechenden Unit

Das hat nichts zu bedeuten.

Grundsätzlich sind beim Debuggen PAS und DCU keine Einheit.

Wenn die Library-Suchpfade (DCU) andere sind, als die Suchpfade (PAS), dann kann Delphi schnell mal die "falsche" PAS laden, da nur nach Dateinamen gesucht wird und nicht ob die PAS auch inhaltlich zur DCU paßt.

Iwo Asnet 13. Aug 2012 12:44

AW: Ursache finden für EResNotFound Exception
 
Sieht so aus, als ob es eine Gehirnabsenkungsproblematik ist, eventuell hilft ja einfaches 'alles kompilieren, man weiss ja nie'.

Rein theoretisch wäre es denkbar, das die cxImages.pas VOR der Forms.pas initialisiert wird. Wenn dem so ist, solltest Du in den Interface-Abschnitten der einzelnen units das cxImages.pas mal ans Ende der uses-Liste packen. Vielleicht bringt es was

bwolf 17. Aug 2012 14:31

AW: Ursache finden für EResNotFound Exception
 
Alles neu kompilieren / erzeugen habe ich mehrfach probiert...
Habe heute das Hotfix für XE2 Update 4 aufgespielt und auch die DevExpress Komponenten komplett entfernt und den neuesten stand eingespielt - nicht :/

Das verschieben der cxImage.pas habe ich probiert, leider ebenfalls ohne Erfolg.
Ich habe nun ein Ticket bei DevExpress aufgegeben, mal sehen was die sagen.

Falls jemand noch Ideen hat - her damit.
Und danke allen für die Hilfe bisher.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 Uhr.
Seite 1 von 2  1 2      

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