Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TuniConnection (https://www.delphipraxis.net/180785-tuniconnection.html)

youuu 17. Jun 2014 18:57

TuniConnection
 
Guten Abend,

ich erstelle per runtime die Komponente TUniConnection

Delphi-Quellcode:
Connect := TUniConnection.Create(nil);
    Connect.Port := MYSQL_PORT;
    Connect.ProviderName := MYSQL_PROVIDER;
    Connect.Server := MYSQL_SERVER;
    Connect.Username := MYSQL_USERNAME;
    Connect.Database := MYSQL_DATABASE;
    Connect.Password := MYSQL_PASSWORD;
    Connect.Options.DisconnectedMode := True;
    Connect.Options.LocalFailover := True;
    Connect.OnConnectionLost := ConnectionConnectionLost;  // <-----
    Connect.Connect;
Delphi-Quellcode:
procedure ConnectionConnectionLost(Sender: TObject;
  Component: TComponent; ConnLostCause: TConnLostCause;
  var RetryMode: TRetryMode);
begin
  RetryMode := rmReconnectExecute;
end;
Leider funktioniert die Zuweisung so nicht.
(E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur')



Wenn ich das über eine Klasse regel

Zitat:

type
TUni_connection = class
private
public
procedure ConnectionConnectionLost(Sender: TObject;
Component: TComponent; ConnLostCause: TConnLostCause;
var RetryMode: TRetryMode);
end;
erhalte ich den Fehler (wärend der Laufzeit), EReadError "Ungültiger Eigenschaftswert"

Wie löse ich das am besten?

himitsu 17. Jun 2014 19:18

AW: TuniConnection
 
Indem du das machst, was da steht?

Das darft halt keine Prozedur, sondern muß eine Methode sein. :roll:

youuu 17. Jun 2014 19:34

AW: TuniConnection
 
Hm, hast noch meinen 2. Versuch gesehen über eine Klasse? Damit startet das Programm, allerdings meckert es dann, siehe 1. Post.

himitsu 17. Jun 2014 19:44

AW: TuniConnection
 
TUni_connection ist auch instanziiert?

Und wo tritt denn diese Exception auf?

youuu 17. Jun 2014 19:48

AW: TuniConnection
 
Ja ist initialisiert.

Fehler beim Lesen von Connection.OnConnetionLost: Ungültiger Eigentschaftswert


Edit: Ok Fehler liegt woanderst.

himitsu 17. Jun 2014 19:54

AW: TuniConnection
 
Du lässt jetzt das Event über den FormDesigner/Objektinspektor zuweisen?

Wenn ja, dann muß diese Event published sein.

mkinzler 17. Jun 2014 20:35

AW: TuniConnection
 
Oder man verwendet eine anonyme Methode:

Delphi-Quellcode:
connect.OnConnectionLost := procedure (Sender: TObject;
  Component: TComponent; ConnLostCause: TConnLostCause;
  var RetryMode: TRetryMode);
begin
  RetryMode := rmReconnectExecute;
end;

himitsu 17. Jun 2014 21:22

AW: TuniConnection
 
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. :zwinker:

mkinzler 17. Jun 2014 21:46

AW: TuniConnection
 
Lut Delphihilfe sollte es funktionieren:

http://docwiki.embarcadero.com/RADSt...onyme_Methoden

Sir Rufo 17. Jun 2014 22:54

AW: TuniConnection
 
Zitat:

Zitat von mkinzler (Beitrag 1262649)
Lut Delphihilfe sollte es funktionieren:

http://docwiki.embarcadero.com/RADSt...onyme_Methoden

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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 Uhr.
Seite 1 von 2  1 2      

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