AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi In Konsolenanw. auf Firebird-Events reagieren?
Thema durchsuchen
Ansicht
Themen-Optionen

In Konsolenanw. auf Firebird-Events reagieren?

Ein Thema von RSE · begonnen am 5. Dez 2012 · letzter Beitrag vom 7. Dez 2012
 
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#11

AW: In Konsolenanw. auf Firebird-Events reagieren?

  Alt 5. Dez 2012, 19:46
Klappt auch mit IBDAC.

Delphi-Quellcode:
program IBDACEventConsoleTest;

{$APPTYPE CONSOLE}

uses
  SysUtils, IBC, IBCAlerter, Forms, Types, Windows;

type
  TMyEventHandler = class
  public
    procedure DoEventAlert(Sender: TObject; AEventName: string; AEventCount: Longint);
  end;

var
  conn: TIBCConnection;
  alerter: TIBCAlerter;
  isShutdown: Boolean;
  eventHandler: TMyEventHandler;

function ConsoleEventProc(CtrlType : DWord) : Bool; stdcall; far;
begin
  case CtrlType of
    CTRL_C_EVENT,
    CTRL_BREAK_EVENT,
    CTRL_CLOSE_EVENT,
    CTRL_LOGOFF_EVENT,
    CTRL_SHUTDOWN_EVENT: isShutdown := True;
  end;
  Result := True;
end;

{ TMyEventHandler }

procedure TMyEventHandler.DoEventAlert(Sender: TObject; AEventName: string; AEventCount: Integer);
begin
  Writeln(Format('Event: %s received. Count: %d', [AEventName, AEventCount]));
end;

begin
  SetConsoleCtrlHandler(@ConsoleEventProc, True);
  try
    eventHandler := TMyEventHandler.Create;
    try
      conn := TIBCConnection.Create(nil);
      try
        conn.LoginPrompt := False;
        conn.Database := 'localhost/3051:tourism.fdb';
        conn.Username := 'tourism';
        conn.Password := 'tourism';
        conn.Connect;
        alerter := TIBCAlerter.Create(nil);
        try
          alerter.OnEvent := eventHandler.DoEventAlert;
          alerter.Connection := conn;
          alerter.Events.Add('Event1');
          alerter.Active := True;
          isShutdown := False;
          while not isShutdown do
          begin
            Application.HandleMessage;
          end;
        finally
          alerter.Active := False;
          alerter.Free;
        end;
      finally
        conn.Disconnect;
        conn.Free;
      end;
    finally
      eventHandler.Free;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Dann noch in PSQL den Event feuern und nicht vergessen zu committen.

Code:
set term !! ;
execute block
as
begin
  post_event('Event1');
end
!!
set term ; !!

commit;
Ich bekomme in der Konsole dann den entsprechenden Output aus meinem Event-Handler. Ob das jetzt hingepfuscht oder sauber ist, können uns die echten Delphi-Geeks hier sagen.
  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 14:27 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