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.