Einzelnen Beitrag anzeigen

Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#1

Zugriffsverletzung mit Interfaces und TList-Nachfahre

  Alt 16. Jan 2009, 21:57
Hi,

Codeausschnitt:

Delphi-Quellcode:
  SimpleBrain := TSimpleBrain.Create(1, 1);
  try
    try
      //kleiner Hack zum Testen --> Programmierung dass
      with TNeuron(SimpleBrain.Input[0]) do
      begin
        Output.Add(SimpleBrain.Output[0]);
in der letzten geposteten Zeile kommt es zur AV, wobei nicht einmal die Add-Methode betreten wird, das heißt vermutlich knallt es schon vorher beim Zugriff auf Input[0].Output, weil Input nicht mehr existiert.

SimpleBrain.Input/Output sind Eigenschaften vom Typ TNeuronList, diese gibt ein INeuron-Interface zurück. Ich weiß aber (da es mein Code ist), dass dahinter die Klasse TNeuron steckt, und auf eine Eigenschaft von dieser, die wiederum eine TNeuronList ist, möchte ich (testweise) zugreifen.

Im Debugger wird bei F7 drücken nie durch den Destruktor von TNeuron gegangen, das hatte ich anfangs, da ich durch die Typecasts die Referenzzählöungs-CompilerMagic ausgehebelt habe, aber nun habe ich manuell _AddRef und _Release aufgerufen, und ich lande auch nicht mehr im Destruktor. Mein Neuron sollte also noch existieren.

Nun ja, ich finde die Ursache nicht.

Im Anhang das komplette Programm.

Mfg
FAlter
Angehängte Dateien
Dateityp: zip brain090116_2153_648.zip (4,6 KB, 0x aufgerufen)
Felix Alter
  Mit Zitat antworten Zitat