AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie kann ein Zeiger auf eine Funktion als Paramater übergeben werden?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann ein Zeiger auf eine Funktion als Paramater übergeben werden?

Offene Frage von "FriendOfDelphi"
Ein Thema von FriendOfDelphi · begonnen am 26. Nov 2010 · letzter Beitrag vom 9. Dez 2010
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#1

AW: Wie kann ein Zeiger auf eine Funktion als Paramater übergeben werden?

  Alt 26. Nov 2010, 17:03
Im Profil steht Delphi 5, da kann man die Hälfte Deiner Ausführungen wieder vergessen (Klassenmethoden, anonyme Methoden, ...)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.756 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wie kann ein Zeiger auf eine Funktion als Paramater übergeben werden?

  Alt 26. Nov 2010, 17:07
Im Profil steht Delphi 5,
Ja, hab ich gesehn.

Man kann ihm ja auch mal was Neueres schmackhaft machen?

Und dann gibt es auch sehr Viele, mit anderen Delphi-Versionen (und sogar einige Fremdgänger ohne Delphi ) und vorallem für die, mit neueren Versionen, kann man doch auch mal gleich was mit sagen.
> Falls sie hier mitlesen, entdecken sie vierleicht auch noch was für sich.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wie kann ein Zeiger auf eine Funktion als Paramater übergeben werden?

  Alt 26. Nov 2010, 17:09
[OT]
Man kann ihm ja auch mal was Neueres schmackhaft machen?
Bist Du auf Provision aus? [/OT]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.756 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wie kann ein Zeiger auf eine Funktion als Paramater übergeben werden?

  Alt 26. Nov 2010, 17:35
Dafür kann man Geld bekommen?

Nja, aktuell bekomm ich wieder mal mit, wie sehr ich einige neuere Features mag.
Die Generics sind zwar teilweise total blöde und nicht benutzbar, aber vorallem die generische TList<> ist was extrem Feines.
Und auch die Klassenvariablen seit D2006/TDE sind schon praktisch, im Kampf gegen die bösen globalen Variablen.



nochmal @Topic:
Also, wie gesagt, für diesen Fall wäre TTest2 die Lösung.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#5

AW: Wie kann ein Zeiger auf eine Funktion als Paramater übergeben werden?

  Alt 26. Nov 2010, 17:47
Ich habe Delphi 5 und möchte dies auch erstmal weiter verwenden...
Was gilt denn von dem Gesagten für Delphi 5?
Ich kann euch noch nicht so richtig folgen.

Ich habe eine Unit in dem das Form gemacht wird. Hier soll auch die Funktion deklariert und definiert werden, die dem Objekt beim Erstellen mitgegeben werden soll.
Der Konstruktor und alle weiteren Methoden sind in einer zweiten Unit.
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wie kann ein Zeiger auf eine Funktion als Paramater übergeben werden?

  Alt 26. Nov 2010, 17:51
Du willst doch eine Routine/Methode als Parameter deklarieren, ist das soweit richtig? Wenn ja, dann musst Du diese nur typisieren, dann geht das ohne Probleme. Der einzige Unterschied zwischen einfacher Routine und Methode ist der, dass eine Methode zu einer Klasse gehört, weshalb man bei der Typisierung dann "of object" dahinter schreiben muss (und dann natürlich auch eine Klasse braucht, die ein entsprechendes Methodenfeld besitzt).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: Wie kann ein Zeiger auf eine Funktion als Paramater übergeben werden?

  Alt 26. Nov 2010, 17:56
Ich hab Dir mal ein Beispiel gebastelt, der Übersicht halber alles in einer Unit
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TBeispiel=Procedure(Sender:TObject) of object;

  TMyClass=Class(TButton)
    Private
      FMethode:TBeispiel;
    public
    Constructor Create(AOwner:TComponent;Methode:TBeispiel);
  End;


  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TMyClass }

constructor TMyClass.Create(AOwner: TComponent; Methode: TBeispiel);
begin
  inherited Create(AOwner);
  FMethode := Methode;

  //TEST
  Tag := 100;
  if Assigned(FMethode) then FMethode(Self);
  //ENDE TEST
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Showmessage(IntToStr(TComponent(Sender).Tag));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  With TMyClass.Create(Self,Button1Click) do
    begin
      Parent := self;
      Caption := 'Neuer Button';
    end;
end;

end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 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-2025 by Thomas Breitkreuz