Thema: Delphi Callback

Einzelnen Beitrag anzeigen

shmia

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

Re: Callback

  Alt 15. Jan 2008, 17:55
Es gibt Callback-Funktionen und Callback-Methoden.
In deinem Fall handelt es sich um Methoden, da du mit der Klausel "of object;" deklariert hast.
Wenn ich mir folgendes Codestück anschaue:
Delphi-Quellcode:
function hasBillingProduct(billing: IInicBilling; productId: integer): boolean;
  procedure forEach(Self: pointer; billposProduct: IInicBillposProduct);
  begin
    Result := Result or (billposProduct.Product.Pid = productId);
  end;
begin
  forEachBillposProduct(billing, _getForEachBillposProductMethod(nil, @forEach));
end;
dann fallen 2 Dinge auf:
* der self Zeiger ist auf nil gesetzt - das sollte bei Methodenzeigern nicht sein
(du greifst zwar später nicht auf self zu, aber es macht schon ein ungutes Gefühl)
* procedure forEach ist eine geschachtelte Prozedur. Diese darf eigentlich nur im Kontext der umliegenden
funktion/prozedur hasBillingProduct ausgeführt werden.
Durch deine Tricks hat die procedure forEach ein ganz anderes Stackumfeld, was wohl Probleme verursachen kann.
Andreas
  Mit Zitat antworten Zitat