Zitat von
Blizzard:
@jbg jupp weis ich die prozeduer ist auch published, sie wir auch aufgerufen wenn ich im debugger mit F7 weiterspringe aber der wert der als parameter ankommt ist ein andere als der der eingegeben wird
Das liegt daran, dass du eine Methode aufrufst und keine Prozedur/Funktion. Bei einer Methode gibt es noch einen weiteren, versteckten, Parameter.
Delphi-Quellcode:
procedure GetMethod(var Method; Instance: TObject; const MethodName: string);
begin
TMethod(Method).Code := Instance.MethodAddress(MethodName);
TMethod(Method).Data := Instance;
end;
function TForm1.TestProc(Count: Byte): Integer;
begin
Self.Color := clRed; // Zugriff auf Self testen
Result := Count; // Rückgabewert testen
end;
procedure TForm1.Button4Click(Sender: TObject);
var GetProc: function(Count: Byte): Integer of object;
begin
GetMethod(GetProc, Self, 'TestProc'); // GetProc auf 'TestProc' setzen
ShowMessage(IntToStr(GetProc(100)));
end;
Und von welchem Rückgabewert sprichst du? Du rufst doch eine Prozedur auf und die hat per Definition keinen Rückgabewert.