AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Datentyp für anonyme Methoden wie TMethod für Methoden
Thema durchsuchen
Ansicht
Themen-Optionen

Datentyp für anonyme Methoden wie TMethod für Methoden

Ein Thema von RSE · begonnen am 8. Aug 2012 · letzter Beitrag vom 9. Aug 2012
 
RSE

Registriert seit: 26. Mär 2010
254 Beiträge
 
Delphi XE Enterprise
 
#3

AW: Datentyp für anonyme Methoden wie TMethod für Methoden

  Alt 8. Aug 2012, 12:31
Das Problem ist ja, daß die Parameter-Definition da nicht mit abgelegt wird, weswegen einem sowieso eine allgemeine Variable nicht hilft.
Ich habe eine Abstraktion, die das Array verwaltet, dort sind die Parameter egal, dort brauche ich diese allgemeine Variable. Dann habe ich eine Konkretisierung, die dem Nutzer sichtbar ist und somit den Typ des zu registrierenden Handlers prüft (also die Parameter) und den Aufruf der Handler übernimmt - die zweite und letzte Stelle, an der die Parameter bekannt sein müssen.

Du kannst dir also nur mit tmytype = reference to ...; eine variable erstellen, welche für einen bestimmte Parameterdeklaration gilt, egal ob für eine anonyme Methode, ein "normale" Methode oder eine Funktion/Prozedur ... das passt alles da rein, solange die Parameter übereinstimmen.
Das gleicht ja der Definition einer normalen "procedure of object"-Deklaration, die es neben TMethod auch noch gibt. Ist für mich in der Konkretisierung relevant, aber für die abstraktere Ebene nach meinem Wissensstand unbrauchbar. Oder kann man jede beliebige Referenz gefahrlos auf "TRef = reference to procedure;" casten?

Folgender Code ist compilierbar und wird scheinbar korrekt ausgeführt:
Delphi-Quellcode:
procedure TMyForm.DoShow;
type
  TRef = reference to procedure;
  TTestRef = reference to function(i: Integer): string;
var
  s: string;
  r: TRef;
  t: TTestRef;
begin
  t := function (i: Integer): string
    begin
      Result := IntToStr(i);
    end;
  r := TRef(t);
  s := TTestRef(r)(20);
  showmessage(s);
end;
Funktioniert hier die Referenzzählung noch korrekt? Wird das dahinterliegende Objekt nicht "beschädigt"? Oder funktioniert obiger Quellcode nur zufällig? Mein Wissen über Interfaces ist auch erst wenige Wochen alt und beschränkt sich auf die Basics...
"Seit er seinen neuen Computer hat, löst er alle seine Probleme, die er vorher nicht hatte."
  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:53 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