AGB  ·  Datenschutz  ·  Impressum  







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

Anonyme methode als Parameter übergeben

Ein Thema von Dennis07 · begonnen am 4. Jul 2015 · letzter Beitrag vom 5. Jul 2015
 
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
491 Beiträge
 
Delphi 11 Alexandria
 
#1

Anonyme methode als Parameter übergeben

  Alt 4. Jul 2015, 16:20
Delphi-Version: XE5
Hallo,
ich bins mal wieder und ich hab ne frage. Diesmal geht es um anonyme Methoden, die als Parameter einer von mir implementierten Funktion übergeben werden sollen.
Allerdings soll deren Parameterzahl beliebig sein.
Aktuell übergebe ich diese als Pointer meiner Funktion und rufe sie mit dem ASM-Befehl CALL auf.
Das funktioniert auch ganz prima. Nur leider ist ja Inline-Assembly nicht mehr unter x64 erlaubt und so suche ich nach einer geeigneten Alternative. Desweiteren erscheint es mir nicht besonders sauber, nur weil ich nicht weiß wie ich es sonst lösen soll, mitten in ner Funktion eine einzelne ASM-Zeile einzufügen...

Beispiel:
Delphi-Quellcode:
procedure Add(A,B: Integer; var C: Integer);
asm
  ADD EAX,EDX
end;

function Euler: Integer;
begin
  Result := Round(Exp(1));
end;
So, die oben genannten Methoden machen irgendetwas (ist ja jetzt erstmal egal was). Tatsache ist aber, dass sie zwei unterschiedliche Parameterlisten haben und und unterschiedliche typen zurückgeben.
Mein Ansatz bisher war wie folgt:

Delphi-Quellcode:
procedure DoSomething(Method: Pointer);
begin
  //...
  asm
    CALL [Method]
  end;
  //...
end;
Aufrufen tue ich das ganze dann wie folgt:

Delphi-Quellcode:
DoSomething(@Add);
DoSomething(@Euler);
Beifügen sollte ich evl. noch, dass sowohl die eingabeparameter als auch die ausgegebenen Werte nicht weiter von belangen sind. Dass die einzelne Methode also nur "schrott" ausgeben kann, wenn man ihre Parameter nicht definiert, dürfte klar sein.

MfG
Dennis
  Mit Zitat antworten Zitat
 


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 19:44 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