AGB  ·  Datenschutz  ·  Impressum  







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

Anonymous method: TProc Referenzen vergleichen

Ein Thema von Rollo62 · begonnen am 6. Sep 2018 · letzter Beitrag vom 8. Sep 2018
 
Rollo62

Registriert seit: 15. Mär 2007
4.168 Beiträge
 
Delphi 12 Athens
 
#1

Anonymous method: TProc Referenzen vergleichen

  Alt 6. Sep 2018, 09:06
Delphi-Version: 5
Hallo zusammen,

ich möchte eine Funktion wie hier mehrfach aufrufen

Delphi-Quellcode:
procedure CalledByButtonClick;
begin
    // Beim Eintritt soll gecheckt werden ob die Funktion noch läuft
    // wenn ja, wird die alte Funktion gekillt und ersetzt
    TAnonCaller.ExecuteWithKillAndDelay(procedure
                                        begin
                                            // Kommt hier nach Verzögerung an
                                        end);
end;
Dazu müsste ich an einer Stelle zwei Referenzen zu anonymen Methoden vergleichen,
ungefähr so:

Delphi-Quellcode:

// A1 ist die Referenz auf die intern gespeicherte anonyme prozedur, s.o,
// A2 ist die Referenz auf (dieselbe) anonyme prozedur, nur eben wir diese jetzt zum 2. Mal aufgerufen
function Compare(A1 : TProc; A2 TProc) : Boolean;
begin
    Result := A1 = A2;
end;
Ich habe schon einiges Interessantes dazu gefunden
https://forums.embarcadero.com/threa...hreadID=167554
https://stackoverflow.com/questions/...under-the-hood
https://sergworks.wordpress.com/2010...the-internals/
https://forums.embarcadero.com/threa...hreadID=167554
https://theroadtodelphi.com/2010/10/...pe-definition/

Aber so richtig weiter komme ich im Moment damit nicht.
Der bisher vielversprechendste Ansatz war der:
Delphi-Quellcode:
procedure Test(P1 : TProc; P2 : TProc);
type
  PIInterface = ^IInterface;
var
  UnitName : String;
  Ctx: TRttiContext;
  ProcType: TRttiType;
  obj1: TInterfacedObject;

begin
  obj1 := PIInterface(@P1)^ as TInterfacedObject;

  UnitName := obj.UnitName;
  Ctx := TRttiContext.Create;
  ProcType := Ctx.GetType(obj1.ClassType);
So kann ich die Typen von P1 analysieren, aber eben nicht herausfinden ob P1 = P2 ist.

Vielleicht könnte mich freundlicherweise jemand in die richtige Richtung schubsen,
denn wahrscheinlich sehe gerade ich den Wald vor lauter Bäumen nicht mehr


Rollo
  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 11:05 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