Autor Beitrag
cherokee
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Do 17.04.08 11:35 
Hallo Leute!

Ich hab ein rießiges Problem. Ich hab per XML-Datenbindungsassistent ein XML dtd in Delphi umgewandelt. Da das ganze nicht 100% funktioniert hat, musste ich ein wenig rumarbeiten. Jetzt tritt folgendes, von mir noch nie beobachtete Phänomen auf.

Folgende Methode wird aufgerufen:
// Edit: Der eigentliche Inhalt der Methode ist uninteressant, da ich ihn zu Testzwecken verändert hab!
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function TXMLTeamPlayType.Get_LinearRelation: IXMLLinearRelationType;
var
  obj : TInterfacedObject;
begin
  obj :=  ChildNodes.FindNode('LinearRelation');

  *mist*e  !!!

  if (obj.ClassName <> '') then
    Result :=  obj as IXMLLinearRelationType;
end;


Alles kompiliert und läuft. Ja, trotz des Unsinns dazwischen.

Und genau da liegt das Problem. Der Teil zwischen begin und end wird einfach komplett ignoriert. Ich kann an begin und end Breakpoints setzen. Er überspringt aber den Teil dazwischen.

Das Programm bricht dann mit der Exception "EIntfCastError bei $B00F969" irgendwo muss also was mit den Interfaces nicht passen.

Hat irgendjemand ne Ahnung, wo das Problem liegt?

Vielen Dank,
Michi
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 17.04.08 11:44 
hmm, hast du die .pas Dateien usw. verschoben? Dann kann sein, dass er noch mit dem alten Code arbeitet. Sonst: bist du ganz ganz sicher, dass die Methode wirklich aufgerufen wird?

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
cherokee Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Do 17.04.08 11:52 
Hab die .pas Dateien nicht verschoben, werd aber schnell mal testen, ob er noch mit alten arbeitet.

Und ja, die Methode wird aufgerufen, da er den Breakpoint bei begin beachtet und anhält!
cherokee Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Do 17.04.08 11:54 
Super, super! :D
Danke, du hattest recht. Er hat noch mit alten .dcu gearbeitet. :cry:
Ich hab das Programm in mehrere Projekte geteilt, damit es etwas übersichtlicher wird. Und dann jeweils nur das Programm selbst neu compiliert ... :oops:
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 17.04.08 12:03 
jojo, sowas kenn ich ;)

aber der Breakpoint beim begin löst normalerweise nicht aus, daran kann man auch schon erkennen, das was faul ist.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
cherokee Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Do 17.04.08 12:36 
Hat er aber. Der Begin und das Ende der Methode war ja vorher auch schon definiert.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 17.04.08 13:20 
ja, aber begin und end sind ja keine Befehle. Bei meinem Delphi geht da kein Breakpoint (auser, er hat wieder was durcheinander gebracht)

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)