Fehlverhalten beim Import eines C++Builder3-Projektes in C++Builder5.0 !!
-
Hallo,
ich habe bei meinem Borland C++Builder 5.0 folgendes Fehlverhalten festgestellt:Ich habe ein altes Borland C++Builder 3.0 Projekt mit einer komplizierten Menüoberfläche und selbst entwickelten Komponenten. Wenn ich nun dieses mit Borland C++Builder 5.0 übersetzen will, macht dieser das auch, nachdem ich die Komponente neu übersetzt und installiert habe. Jedoch kommt zur Laufzeit eine Stackoverflow-Exception vom Formular "MainUnit". Wenn ich im Builder jetzt versuche dieses Formular zu öffnen, dann stürzt der ganze Builder dabei ab.
Hat jemand eine Ahnung, woran das liegen könnte?
Danke
Christian
-
Irgend eine versteckte rekursivität in einer selbstentwickelten Kompo vielleicht? An welcher stelle tritt denn der Stackoverflow auf? Was sagt der Calling-Stack?
-junix
-
Das Problem liegt ja auch daran, dass ich an das Formular gar nicht herankomme (ohne das der C++Builder abschmiert), um es einfach durchzusteppen wo der Fehler liegt.
Noch etwas ist komisch: Der Objektinspektor zeigt überhaupt keine Objekte an, obwohl sie in der Projektverwaltung enthalten sind.
-
Spätestens wenn die Applikation den Stackoverflow auslöst, dürfte sich doch die IDE melden?
Ansonsten mal das DFM von Hand editieren und von den Eigenen Kompos mal die Stück um Stück rausschmeissen um festzustellen welche den Fehler verursacht.
-junix
-
Ja, die IDE meldet sich, jedoch mehr als das CPU-Fenster und die Stackoverflow-Meldung ist nicht drin.
Wie soll ich denn die DFM editieren? BCB lässt mich ja nicht. Und mit Ultraedit kann man's vergessen.
-
View->Debug Windows->Calling Stack Window anzeigenlassen und nach einem Funktionsnamen suchen den du kennst. Da würde ich dann mal anfangen zu suchen....
-junix
-
Leider steht hier im BackTrack gar keine von meinen Funktionen?
77E7A4E1 C:\WINNT\system32\kernel32.dll
0046B9D3 System::NotifyNonDelphiException()
77895160 ntdll.dll
778A1606 ntdll.dll
00459584 CreateComponent()
004597B6 Classes::TReader::ReadComponent(Self=:00C35090, Component=NULL)
00459A0B Classes::TReader::ReadDataInner(Self=:00C35090, Instance=:00C45778)
00459974 Classes::TReader::ReadData(Self=:00C35090, Instance=:00C45778)
0045B9E3 Classes::TComponent::ReadState(Self=:00C45778, Reader=:00C35090)
00444886 Controls::TControl::ReadState(Self=:00C45778, Reader=:00C35090)
0044883D Controls::TWinControl::ReadState(Self=:00C45778, Reader=:00C35090)
00459821 Classes::TReader::ReadComponent(Self=:00C35090, Component=NULL)
00459A0B Classes::TReader::ReadDataInner(Self=:00C35090, Instance=:00C34854)
00459944 Classes::TReader::ReadData(Self=:00C35090, Instance=:00C34854)
0045B9E3 Classes::TComponent::ReadState(Self=:00C34854, Reader=:00C35090)
00444886 Controls::TControl::ReadState(Self=:00C34854, Reader=:00C35090)
0044883D Controls::TWinControl::ReadState(Self=:00C34854, Reader=:00C35090)
0043406A Forms::TCustomForm::ReadState(Self=:00C34854, Reader=:00C35090)
0045A83C Classes::TReader::ReadRootComponent(Self=:00C35090, Root=:00C34854)
00457EB8 Classes::TStream::ReadComponent(Self=:00C35074, Instance=:00C34854)
00454FDD Classes::InternalReadComponentRes(ResName={ "TMainForm" }, HInst=4194304, Instance=:0012FD34)
004551B9 InitComponent(ClassType=:00473310)
0045524B Classes::InitInheritedComponent(Instance=:00C34854, RootAncestor=:00430CF4)
00433934 Forms::TCustomForm::Create(Self=:00C34854, AOwner=:00C34270, ...)
0040180B Forms::TForm::TForm
00401642 __tpdsc__ Sysutils::Exception *
0043C29F Forms::TApplication::CreateForm(Self=:00C34270, InstanceClass=:00473310, Reference=:0047839C)
0040139C WinMain
3257E14F C:\Programme\Borland\CBuilder5\Bin\CC3250MT.DLL
-
Warum kann ich eine dfm-Datei nicht öffnen?
-
Hmmmm... Aber die Rekursion siehst du, ja? schmeiss mal die eigenen Kompos raus (nach einander durchprobieren) (sag ich jetzt shcon zum 100. mal...)
-junix