AGB  ·  Datenschutz  ·  Impressum  







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

TuniConnection

Ein Thema von youuu · begonnen am 17. Jun 2014 · letzter Beitrag vom 19. Jun 2014
Antwort Antwort
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: TuniConnection

  Alt 17. Jun 2014, 20:35
Oder man verwendet eine anonyme Methode:

Delphi-Quellcode:
connect.OnConnectionLost := procedure (Sender: TObject;
  Component: TComponent; ConnLostCause: TConnLostCause;
  var RetryMode: TRetryMode);
begin
  RetryMode := rmReconnectExecute;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.531 Beiträge
 
Delphi 12 Athens
 
#2

AW: TuniConnection

  Alt 17. Jun 2014, 21:22
Aber nicht laut der Deklaration.
http://www.devart.com/unidac/docs/in...ficoptions.htm

Für mich sieht das nur nach einer Methode aus.
Und wenn anonyme Methoden gehen würden, dann hätte man auch die Prozedur zuweisen können, da derartige Referenzen/Zeiger alle 3 Varianten enthalten können.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TuniConnection

  Alt 17. Jun 2014, 21:46
Lut Delphihilfe sollte es funktionieren:

http://docwiki.embarcadero.com/RADSt...onyme_Methoden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: TuniConnection

  Alt 17. Jun 2014, 22:54
Wo steht das da?

Dort wird nur der umgekehrte Fall beschrieben
Delphi-Quellcode:
type
  TFoo = class
    procedure Bar( Sender : TObject );
  end;

procedure Bar( Sender : TObject );
begin
end;

procedure test;
var
  LEvent : TNotifyEvent;
  LProc : TProc<TObject>;
  LFoo : TFoo;
begin
  LProc := LFoo.Bar;
  LProc := Bar;
  LProc := procedure ( Sender : TObject )
  begin
  end;

  LEvent := LFoo.Bar;
  // der Rest geht nicht
  LEvent := Bar;
  LEvent := procedure ( Sender : TObject )
  begin
  end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (17. Jun 2014 um 23:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.531 Beiträge
 
Delphi 12 Athens
 
#5

AW: TuniConnection

  Alt 18. Jun 2014, 00:11
Technisch wäre es möglich, wenn für die anonyme Methode (welche intern ein Interface ist) je ein virtueller Prozedurzeiger erzeugt würde, für Prozeduren und eventuell auch für Methoden,
aber mir ist noch nicht bekannt, daß Emba bereits auf diese Idee gekommen ist. (TMethodImplementation)
Beim virtuellen Methodenzeiger könnte man das Interface im Data-Teil des Zeigers verstecken, also da wo bei Methoden die Objektinstanz und bei Klassenmethoden der Klassentyp steckt.

Wobei die eigentlich absichtlich nicht darauf gekommen sind, denn für das Interface gibt es in den Methoden und Prozedurzeigern ein klitzekleines Problem, mit der fehlenden Referenzzählung in diesen Zeigern.
Via ARC könnte man das maximal bei Methodenzeigern implementieren, fals Emba dort die Referenz ordentlich zählt.
Aber zumindestens vom RTL-Quellcode sieht es grade danach aus, als wenn Emba im ARC einen Bug hat, da es nicht so aussieht, als wenn Methodenzeiger (genauer TMethod.Data) keine Referenzzählung besitzen, obwohl sie zu über 90% eine Objektreferenz enthalten.

Also aktuell geht es IMHO nur so:
reference to procedure <= anonyme Methode, Methode, Klassenmethode, statische Klassenmethode oder Prozedur
procedure of object <= Methode oder Klassenmethode
procedure <= Prozedur oder statische Klassenmethode
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Jun 2014 um 00:28 Uhr)
  Mit Zitat antworten Zitat
Mschmidt

Registriert seit: 4. Jul 2010
Ort: Berlin
62 Beiträge
 
Delphi XE2 Professional
 
#6

AW: TuniConnection

  Alt 19. Jun 2014, 13:02
Das Problem liegt daran, dass die zuweisende Methode KEINE Klassenmethode ist.

also statt
(T)Uniconnection.<Event>:= EventMethode musse

(T)UniConnection.<Event>:= <Class>.EventMethode stehen,

Grüsse
Mschmidt
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:06 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