![]() |
Procedure soll Procedure aufrufen als Pointer ?
Hi,
ich habe ein kleines Problemchen, meine Procedure A soll die Procedure B ausführen dieals Parameter übergeben wird:
Delphi-Quellcode:
Wie macht man das ?
var B: procedure(); stdcall;
procedure A(Proc: Pointer); begin // und nu starte "B" end; |
Re: Procedure soll Procedure aufrufen als Pointer ?
Probier mal TProcedure(proc);
|
Re: Procedure soll Procedure aufrufen als Pointer ?
Du musst einen Typen für den Funktionszeiger deklarieren. Du kannst nun entweder den Parameter als von diesem Typ (statt als Pointer) deklarieren oder du castest in der Routine.
|
Re: Procedure soll Procedure aufrufen als Pointer ?
Sorry, ich habe das obere Beispiel "verhauen". Liegt bestimmt am Wetter. ;)
Richtiger wird es so:
Delphi-Quellcode:
Geht das nur über den Typecast ? Irgend wie schauts komisch aus. :mrgreen:
uses
Windows; type TProcedure = procedure; // no SysUtils procedure MyProcNow; stdcall; begin MessageBox(0, 'Hallöhle !', '*', MB_OK); end; procedure CallMyProc(MyProc: Pointer); begin TProcedure(MyProc); end; BEGIN CallMyProc(@MyProcNow); END. |
Re: Procedure soll Procedure aufrufen als Pointer ?
alternativ:
Delphi-Quellcode:
procedure CallMyProc(MyProc: TProcedure);
begin MyProc; end; |
Re: Procedure soll Procedure aufrufen als Pointer ?
Danke. Aber ich wollte das TProcedure los werden.
Ist jetzt aber nicht weiter schlim. |
Re: Procedure soll Procedure aufrufen als Pointer ?
Folgendes dürfte auch noch hin hauen, ist aber kaum hübsch, und sobald Parameter ins Spiel kommen wirds etwas komplizierter:
Delphi-Quellcode:
;)
procedure CallMyProc(MyProc: Pointer);
asm CALL EAX end; |
Re: Procedure soll Procedure aufrufen als Pointer ?
Ja, genau dass ist das warum ich nicht CALL nutze.
Die Procedure und oder Funktion kann ggf. Parameter enthalten. |
Re: Procedure soll Procedure aufrufen als Pointer ?
Was spricht denn gegen 'TProcedure' in dem Prozedurkopf?
[edit] achso, wegen der Parameter... [/edit] [x] Was Du machst, ist schon pervers, das weisst du, oder? :zwinker: |
Re: Procedure soll Procedure aufrufen als Pointer ?
Nein, ich weis von nichts. :gruebel:
|
Re: Procedure soll Procedure aufrufen als Pointer ?
Na gut, dann stell ich mich eben dumm:
Wieso willst Du kein 'TProcedure' im Prozedurkopf, a.k.a. 'Procedure Foobar(Blup : TProcedure)' |
Re: Procedure soll Procedure aufrufen als Pointer ?
Wenn sie Parameter enthalten kann, wie soll das denn dann überhaupt gehen? Was willst du ihr denn übergeben, wenn du die Signatur nicht kennst? Und call sollte man schon allein deshalb nicht verwenden, weil es nicht portabel ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 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