AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Procedure als Parameter übergeben

Ein Thema von SleepyMaster · begonnen am 5. Jan 2004 · letzter Beitrag vom 24. Sep 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#1

Procedure als Parameter übergeben

  Alt 5. Jan 2004, 10:49
Delphi-Quellcode:
function XShow(p:pointer):integer;
begin
ShowMessage('Hallo');
end;

procedure StartThread(Thread:procedure); //<--- Das procedure da mag er ned!
//Hab aber leider keinen Plan was ich sonst da reinschreiben muss!
var
  ThreadID: DWORD;
  ThreadHandle: THandle;
begin
  ThreadHandle:=BeginThread(nil, 0, TFNThreadStartRoutine(@Thread),
    nil, 0, ThreadID);
  if ThreadHandle<>0 then CloseHandle(ThreadHandle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
StartThread(XShow);
end;
Wie muss es richtig heißen???
Vielen Dank schon mal
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Procedure als Parameter übergeben

  Alt 5. Jan 2004, 11:07
also wenn, dann müsstest du auch die parameter der Übergabe-procedure angeben, mir ist aber nicht bekannt, dass man eine procedure als parameter einer anderen Procedure übergeben kann.

Ich weiss auch ehrlich gesagt nicht, was das bringen soll

[Edit]Aber vielleicht kann man das Problem auch anders lösen[/Edit]
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Procedure als Parameter übergeben

  Alt 5. Jan 2004, 11:11
Delphi-Quellcode:
type
  TMyProc = procedure;
end;

{ ... }

procedure Wuppdi(Proc: TMyProc);
begin
 // ...
end;
mfG
mirage228
David F.
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Procedure als Parameter übergeben

  Alt 5. Jan 2004, 11:13
ui
geht das ? Wow, aber wenn dann nur mit Parameterangabe !
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Procedure als Parameter übergeben

  Alt 5. Jan 2004, 11:14
Joa, das geht^^

Auf diese Weise kann man z.B. ein sog. "Callback" realisieren.

Die Events der VCL (TNotifyEvent = procedure(Sender: TObject);) benutzen auch procedures als Paramater.

mfG
mirage2328
David F.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Procedure als Parameter übergeben

  Alt 5. Jan 2004, 11:15
Hallo,
Du kannst eine Methode (bzw einen Methodenzeiger) oder eine reguläre Prozedure übergeben.
Hier ist das Beispiel für den Methodenzeiger
Delphi-Quellcode:
unit Unit1;

interface

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

type

  TMyProc = function (p:pointer):integer of object;

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure Test(AProc : TMyProc);
    function AFunction(p:pointer):integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function TForm1.AFunction(p: pointer): integer;
begin
  Result:=5;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Test(AFunction);
end;

procedure TForm1.Test(AProc: TMyProc);
var
  a : Integer;
begin
  a:=AProc(Nil);
  ShowMessage(IntToStr(a));
end;

end.
Und hier das Beispiel für die reguläre Procedure
Delphi-Quellcode:
unit Unit1;

interface

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

type

  TMyProc = function (p:pointer):integer ;

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

var
  Form1: TForm1;

implementation

{$R *.DFM}

function AFunction(p: pointer): integer;
begin
  Result:=5;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Test(AFunction);
end;

procedure TForm1.Test(AProc: TMyProc);
var
  a : Integer;
begin
  a:=AProc(Nil);
  ShowMessage(IntToStr(a));
end;

end.
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Procedure als Parameter übergeben

  Alt 5. Jan 2004, 11:18
Zitat von mirage228:
Joa, das geht^^

Auf diese Weise kann man z.B. ein sog. "Callback" realisieren.

Die Events der VCL (TNotifyEvent = procedure(Sender: TObject) benutzen auch procedures als Paramater.

mfG
mirage2328
Das die Events (die ja ebenfallsso deklariert werden müssen)
auch proceduren sind, wusst ich aber ich dachte das sie dann
nur ausgeführt werden können, das man dann noch allerlei
anderes Zeugs machen kann, weiss ich erst seit grad eben
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#8

Re: Procedure als Parameter übergeben

  Alt 5. Jan 2004, 11:33
Vielen Dank!
Es geht!
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#9

AW: Procedure als Parameter übergeben

  Alt 10. Nov 2011, 18:18
Zitat:
Delphi-Quellcode:
ThreadHandle:=BeginThread(nil, 0, TFNThreadStartRoutine(@[B][I]test[/I][/B]),
    nil, 0, ThreadID);
  if ThreadHandle<>0 then CloseHandle(ThreadHandle);
Ist es auch möglich, eine vollständig deklarierte Procedur als Parameter zu übergeben?

also nicht diese procedure test; sondern diese procedure TForm1.test;
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#10

AW: Procedure als Parameter übergeben

  Alt 10. Nov 2011, 18:23
Müsste dann halte eine procedure of object; sein. Wobei ich dir an der Stelle dann eher raten würde, auf die TThread-Klasse zu setzen und die Referenz auf die Methode via Property zu setzen.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz