Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

AW: SOAP RIO Object Free Fehler

  Alt 21. Feb 2012, 18:49
Das Free bewirkt, dass die virtuelle Methode [TComponent].Notification() aufgerufen wird.
Ausserdem werden alle Komponenten, die der Komponente Application gehören (also die Child-Components) benachrichtigt.
Und natürlich werden auch die Kinder der Kinder benachrichtigt.
Hier der entscheidende Ausschnitt aus dem Code:
Delphi-Quellcode:
procedure TComponent.Notification(AComponent: TComponent;
  Operation: TOperation);
var
  I: Integer;
begin
  if (Operation = opRemove) and (AComponent <> nil) then
    RemoveFreeNotification(AComponent);
  if FComponents <> nil then
    for I := 0 to FComponents.Count - 1 do
      // Rekursiver Aufruf!!
      TComponent(FComponents[I]).Notification(AComponent, Operation);
end;
Ich weiss jetzt nicht, welche Komponenten "Application" als Owner haben, aber es geht im Prinzip ein Broadcast an alle diese Komponenten.
Irgendeine Komponente könnte das "in den falschen Hals bekommen".

Wegen dieser Eskalation an Notification()-Aufrufen sollte man "Application" nicht als Owner angeben.
Andreas
  Mit Zitat antworten Zitat