![]() |
Procedure als Parameter übergeben
Delphi-Quellcode:
Wie muss es richtig heißen???
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; Vielen Dank schon mal |
Re: Procedure als Parameter übergeben
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 :gruebel: [Edit]Aber vielleicht kann man das Problem auch anders lösen[/Edit] |
Re: Procedure als Parameter übergeben
Delphi-Quellcode:
mfG
type
TMyProc = procedure; end; { ... } procedure Wuppdi(Proc: TMyProc); begin // ... end; mirage228 |
Re: Procedure als Parameter übergeben
ui :shock:
geht das ? Wow, aber wenn dann nur mit Parameterangabe ! |
Re: Procedure als Parameter übergeben
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 |
Re: Procedure als Parameter übergeben
Hallo,
Du kannst eine Methode (bzw einen Methodenzeiger) oder eine reguläre Prozedure übergeben. Hier ist das Beispiel für den Methodenzeiger
Delphi-Quellcode:
Und hier das Beispiel für die reguläre Procedure
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.
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. |
Re: Procedure als Parameter übergeben
Zitat:
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 :mrgreen: |
Re: Procedure als Parameter übergeben
Vielen Dank!
Es geht! |
AW: Procedure als Parameter übergeben
Zitat:
also nicht diese
Delphi-Quellcode:
sondern diese
procedure test;
Delphi-Quellcode:
procedure TForm1.test;
|
AW: Procedure als Parameter übergeben
Müsste dann halte eine
Delphi-Quellcode:
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.
procedure of object;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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