Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Procedure soll Procedure aufrufen als Pointer ? (https://www.delphipraxis.net/121885-procedure-soll-procedure-aufrufen-als-pointer.html)

turboPASCAL 6. Okt 2008 14:26


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:
var B: procedure(); stdcall;

procedure A(Proc: Pointer);
begin
 // und nu starte "B"
end;
Wie macht man das ?

3_of_8 6. Okt 2008 14:28

Re: Procedure soll Procedure aufrufen als Pointer ?
 
Probier mal TProcedure(proc);

Apollonius 6. Okt 2008 14:29

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.

turboPASCAL 6. Okt 2008 14:55

Re: Procedure soll Procedure aufrufen als Pointer ?
 
Sorry, ich habe das obere Beispiel "verhauen". Liegt bestimmt am Wetter. ;)

Richtiger wird es so:

Delphi-Quellcode:
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.
Geht das nur über den Typecast ? Irgend wie schauts komisch aus. :mrgreen:

SubData 6. Okt 2008 15:02

Re: Procedure soll Procedure aufrufen als Pointer ?
 
alternativ:

Delphi-Quellcode:
procedure CallMyProc(MyProc: TProcedure);
begin
  MyProc;
end;

turboPASCAL 6. Okt 2008 15:15

Re: Procedure soll Procedure aufrufen als Pointer ?
 
Danke. Aber ich wollte das TProcedure los werden.

Ist jetzt aber nicht weiter schlim.

Medium 6. Okt 2008 15:18

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;
;)

turboPASCAL 6. Okt 2008 15:48

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.

alzaimar 6. Okt 2008 15:50

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:

turboPASCAL 6. Okt 2008 16:00

Re: Procedure soll Procedure aufrufen als Pointer ?
 
Nein, ich weis von nichts. :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 Uhr.
Seite 1 von 2  1 2      

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