Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Ist Referenz auf class function möglich? (https://www.delphipraxis.net/206505-ist-referenz-auf-class-function-moeglich.html)

TurboMagic 29. Dez 2020 17:02

Ist Referenz auf class function möglich?
 
Hallo,

ich hab' schon danach gesucht ob sowas wie das folgende möglich ist,
aber noch nichts dazu gefunden:

Delphi-Quellcode:
type
  TTest = class function : string of Object;
Also nicht eine Methoden Referenz oder eine auf eine klassische Function,
sondern auf eine CLass Function.

Und in Interfaces können class functions auch nicht, richtig?

Grüße
TurboMagic

Der schöne Günther 29. Dez 2020 17:10

AW: Ist Referenz auf class function möglich?
 
Wenn du mit "TFunc = reference to function" leben kannst:

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses System.SysUtils;

type
   TMyObject = class
      class function MyClassFunction(): String; virtual; abstract;
      function MyObjectFunction(): String; virtual; abstract;
   end;

   function myLoseHerumschlabberndeStringFunction(): String;
   begin
      Result := 'Hallo Welt';
   end;

var
   myStringFunc: TFunc<String>;
begin
   myStringFunc := TMyObject.MyClassFunction;
   myStringFunc := TMyObject.Create().MyObjectFunction;
   myStringFunc := myLoseHerumschlabberndeStringFunction;
end.

TurboMagic 29. Dez 2020 17:21

AW: Ist Referenz auf class function möglich?
 
Hallo,

nach dem mein darauf umgestellter Quellcode compiliert sollte ich wohl damit leben können ;-)
Danke!

Grüße
TurboMagic

himitsu 29. Dez 2020 18:44

AW: Ist Referenz auf class function möglich?
 
Delphi-Quellcode:
function : string of object
nimmt sowohl eine Methode (function), als auch eine KlassenMethde (class function) auf.
Hier unterscheidet sich am Ende nur, was im SELF drin steckt ... ein Zeiger auf die Klasse oder auf eine Objekt-Instanz ... ansonsten sind die Zeiger kompatibel.

Eine
Delphi-Quellcode:
class function xyz: string; static;
passt nur in einen Prozedurzeiger
Delphi-Quellcode:
function: string; // ohne of object
.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:12 Uhr.

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