Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6
  Alt 4. Feb 2003, 23:07
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.
  Mit Zitat antworten Zitat