Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Name einer Prozedur an Prozedur übergeben (https://www.delphipraxis.net/10744-name-einer-prozedur-prozedur-uebergeben.html)

Char 24. Okt 2003 13:05


Name einer Prozedur an Prozedur übergeben
 
Hallo,

Kann man den Namen einer Prozedur A einer bestimmten Prozedur B übergeben?

Also z.B. so:

Delphi-Quellcode:
procedure ProzedurB;
begin
{...}
end;

procedure ProzedurA(prozB: ???);   { <- ich suche das, was bei '???' stehen muss }
var Shape: TShape;
begin

 Shape := TShape.create;

 Shape.onMouseDown := prozB;

end;
Der Aufruf dann:

Delphi-Quellcode:
ProzedurA(ProzedurB);
Es soll also die Prozedur, die in der Variablen prozB gespeichert ist, bei onMouseDown aufgerufen werden...

Danke schonmal...

mirage228 24. Okt 2003 13:52

Re: Name einer Prozedur an Prozedur übergeben
 
Delphi-Quellcode:
type
  TProzedurB = procedure(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer); // Shape onMouseDown sieht so aus!

procedure ProzedurB(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // mach was
end;

procedure ProzedurA(ProzB: TProzedurB);
begin
  // mach was
  // Shape erstellen...
  Shape.OnMouseDown := ProzB;
end;

// aufruf:
ProzedurA(ProzedurB);
mfg
mirage228

Char 24. Okt 2003 18:15

Re: Name einer Prozedur an Prozedur übergeben
 
Vielen Dank :)

Char 26. Okt 2003 13:48

Re: Name einer Prozedur an Prozedur übergeben
 
Ich habs endlich ausprobieren können, aber da kommt folgender Fehler:

[Fehler] USCtrl.pas(57): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'

Und zwar in der Zeile, in der onMouseDown := ProzB steht...

Hilfe bitte! ;)

Christian Seehase 26. Okt 2003 15:05

Re: Name einer Prozedur an Prozedur übergeben
 
Moin Char,

guckst Du hier:

prozedur aufruf und sender

Da hatten wir das Thema gerade recht ausführlich.

woki 26. Okt 2003 15:09

Re: Name einer Prozedur an Prozedur übergeben
 
Hi,

siehe OH

Prozedurale Typen

Um eine Methode eines Instanzobjekts zur referenzieren, muß dem Namen des prozeduralen Typs die Klausel of object hinzugefügt werden:

Delphi-Quellcode:
type

  TMethod = procedure of object;
  TNotifyEvent = procedure(Sender: TObject) of object;
Diese Typen stellen Methodenzeiger dar. Ein Methodenzeiger wird in Form zweier Zeiger codiert, von denen der erste die Adresse der Methode speichert. Der zweite enthält eine Referenz auf das Objekt, zu dem die Methode gehört. Ein Beispiel:

Grüsse
Woki

[edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz