![]() |
Events in Pascal Projekt?
Hi,
ich würde gerne einen kleinen SMTP Daemon mit Indys schreiben, das ganze soll ohne Form laufen, daher hab ich ein Pascal Projekt erstellt, also soll ne Konsolenanwendung werden... Das ganze sieht bis jetzt so aus:
Code:
2 Probleme: Erstens, das mit dem Events registrieren funktioniert noch net, ich soll net nen Prozedurzeiger übergeben sondern ne Prozedurvariable, wie mach ich das? Und 2. Problem, das was ich aus der Programmierung mit Forms kenne mit Application.ProcessMessages funzt auch net, da Application gar net da ist, muss ich dafür noch ne zusätzliche Unit einbinden oder einfach noch Application:TApplication; Application:=TApplication.Create; hin schreiben?
var Socket:TIdSMTPServer;
procedure LoginEvent(ASender: TIdSMTPServerContext; const AUsername, APassword: string; var VAuthenticated: Boolean); begin writeln(AUsername); writeln(APassword); end; procedure ConnectEvent (AContext:TIdSMTPServerContext); begin writeln('Connection coming in...'); end; begin Socket:=TIdSMTPServer.Create; Socket.DefaultPort:=25; Socket.ServerName:='********'; Socket.OnUserLogin:= @LoginEvent; Socket.OnConnect:= @ConnectEvent; Socket.Active := true; repeat Application.ProcessMessages; until keypressed; end. cYa cchris ps: hoffe das ist das richtige forum |
Re: Events in Pascal Projekt?
Eventbehandlungsroutinen müssen Methoden sin.
|
Re: Events in Pascal Projekt?
soll ich dann dadraus
Code:
Oder wie? Weil normalerweise werden ja standartmäßig alle Events auf Methoden des Formulars gelenkt...
type mysocket = class(TIdSMTPServer)
procedure ConnectEvent (AContext:TIdSMTPServerContext); end; var Socket:mysocket; Wenn jemand da mal nur nen gaanz kurzen Code-Schnipsel schreiben könnte, wie er für das Event OnConnect (Prozedurparamter stimmen so wie ich sie hab) nen Event erstellt und registriert, dann wär ich ihm äußerst dankbar, weil ich das bis jetzt noch nie gemacht hab. |
Re: Events in Pascal Projekt?
Es kann aber jede beliebige Klasse sein.
|
Re: Events in Pascal Projekt?
hab jetzt erstmal das gemacht:
[code]type mySocket=class(TIdSMTPServer) procedure ConnectEvent (AContext:TIdSMTPServerContext); end; var Socket:mysocket; procedure mySocket.ConnectEvent(AContext:TIdSMTPServerContex t); begin writeln('Connected...'); end;[code] Aber was schreib ich jetzt bei Socket.OnConnect:= dahinter? Weil wenn ich einfach die Prozedur normal dahinter schreibe, dann wird sie ja normal ausgeführt, oder :?: Sry, bin etwas verwirrt.... |
Re: Events in Pascal Projekt?
Delphi-Quellcode:
Self.ConnectEvent;
|
Re: Events in Pascal Projekt?
hab jetzt:
Code:
Das ganze wird quittiert mit: "Error: Identifier not found "Self""
type
mySocket=class(TIdSMTPServer) procedure ConnectEvent (AContext:TIdSMTPServerContext); end; var Socket:mysocket; procedure mySocket.ConnectEvent(AContext:TIdSMTPServerContext); begin writeln('Connected...'); end; begin Socket:=mysocket.Create; Socket.DefaultPort:=25; Socket.ServerName:='...'; Socket.OnConnect:= Self.ConnectEvent; Socket.Active := true; ... end. Iwas mach ich da wohl verkehrt... :wall: Das Self. durch Socket. oder MySocket. zu ersetzen bringt auch nichts, dann meckert der Compiler, dass die Anzahl der Parameter nicht stimmt... |
Re: Events in Pascal Projekt?
Außerhalb der Klasse:
Delphi-Quellcode:
Socket.OnConnect:= Socket.ConnectEvent;
|
Re: Events in Pascal Projekt?
Wie gesagt, das geht auch nicht, wenn ich das versuche (was ich schon hatte :wink:) dann kommt die Meldung, dass nicht genügend Parameter angegeben seien, aber ich will ja die Methode net sofort ausführen sondern blos "binden"...
|
Re: Events in Pascal Projekt?
Versuch es mal mit einer Hilfs(-Event-)Klasse
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 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 by Thomas Breitkreuz