Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ereignisbehandlungsroutinen... Wie??? (https://www.delphipraxis.net/30059-ereignisbehandlungsroutinen-wie.html)

Kedariodakon 19. Sep 2004 12:31


Ereignisbehandlungsroutinen... Wie???
 
Irgendwie komm ich mit Ereignisbehandlungsroutinen net klar, was das is, weiß ich, wie ich sie schreib... ka :)

Teste grade ein wenig mit Sockets herrum, aber bekomm die Ereignisbehandlung net hi, oder besser habe ka wie das funzt...

hab nu paar Ereignisse hier:
OnConnect
OnConnecting
OnDisconnect
OnError
OnLookup
OnRead
OnWrite


Das wär mein Socket: ClientSocket := TClientSocket.Create(nil);
aber wie zum Henker bau ich nu Ereignisse dazu?


Ich hoffe es ist wer willig mir das zu erklären, denn irgendwie finde ich nichts dazu... :(


MFG keda

mirage228 19. Sep 2004 12:38

Re: Ereignisbehandlungsroutinen... Wie???
 
Hi,

versuchs mal so:

Delphi-Quellcode:
// z.B.
ClientSocket.OnConnect := MeineOnConnectMethode;
"MeineOnConnectMethode" musst du natürlich vorher definieren.

mfG
mirage228

Kedariodakon 19. Sep 2004 15:57

Re: Ereignisbehandlungsroutinen... Wie???
 
Das versteh ich nu gar net.... :shock:
Die Ereignisse sind doch eigene Prozeduren ???

Soll MeineOnConnectMethode dann meine Procedure sein?
Wo muß ich das hinschreiben, was du da gerade geschrieben hast?


Das Ereigniss OnClick von so einem TButton wär ja procedure TForm1.Button1(Sender: TObject);

da müste doch das OnConnect Ereignis des ClientSocket auch ne Prozedure sein oder?
Nur gibts da irgendwie Richlinien für, wie die dann heißen muß?
Muß ich das wo hinschreiben?
Kein Plan und in meinem Delphi Buch steht sowas net drinn...
Da hab ich mit dem Dinge voll ins ... gegriffen...


MFG Lucky

kiar 19. Sep 2004 16:01

Re: Ereignisbehandlungsroutinen... Wie???
 
hallo lucky,

Delphi-Quellcode:
procedure MeineConnection(Sender:TObject);
begin
   Showmessage('verbinden...');
end;

uund im Create;
...
...
ClientSocket.OnConnect := MeineConnection;
...
...
ich hoffe das hilft.

raik

edit // sehe gerade , daß dich noch keiner begrüßt hat:

herzlich willkommen in der delphipraxis

SirThornberry 19. Sep 2004 16:02

Re: Ereignisbehandlungsroutinen... Wie???
 
es ist egal wie die Ereignisproceduren dann heißen muss. Und wie die Ereignisproceduren auszusehen haben ist auch recht einfach.
Das "OnClick" des Buttons ist vom Typ "TNotifyEvent".
Und wenn du dann nach der Deklaration von TNotifyEvent suchst findest du
"TNotifyEvent = procedure(Sender: TObject) of object;"
und somit weißt du das dein procedurekopf so auszusehen hat:
Delphi-Quellcode:
procedure DasObject.Irgendeinname(Sender: TObject);

Kedariodakon 19. Sep 2004 16:45

Re: Ereignisbehandlungsroutinen... Wie???
 
Zitat:

Zitat von kiar
herzlich willkommen in der delphipraxis

danke kiar :)

so habe nun folgende procedure erstellt:
Code:
procedure TForm1.ClientSocketConnect(Sender: TObject);
begin
  BConnect.Enabled := False;      //TButton: BConnect
  BDisconnect.Enabled := True;   //TButton: BDisconnect
end;
OnCreate sieht so aus...
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
...
  ClientSocket.OnConnect := ClientSocketConnect;
...
end;
Aber wenn ich das Starten will bekomm ich auf ClientSocket.OnConnect := ClientSocketConnect;
Den Fehler: [Fehler] SC1.pas(37): Inkompatible Typen: 'Liste der Parameter ist unterschiedlich'

:?

@SirThornberry
Das versteh ich nicht wirklich...
Seh ja auch nirgends ein: TForm1.OnCreate := TForm1.FormCreate;
Obwohl das doch auch irgendwo sein muß oder??

MFG Keda

alcaeus 19. Sep 2004 17:56

Re: Ereignisbehandlungsroutinen... Wie???
 
Hi Lucky,

Du siehst die Zuweisung der OnCreate-Routine des Forms nicht, da dies in der dfm-Datei geschieht. Zieh mal eine TClientSocket-Kompo aufs Form, dann kannst du die Routinen über den OI einfügen.

Greetz
alcaeus

Kedariodakon 19. Sep 2004 18:07

Re: Ereignisbehandlungsroutinen... Wie???
 
jup hab ich schon gefunden:

Code:
...
  object Bconnect: TButton
    Left = 168
    Top = 56
    Width = 75
    Height = 25
    Caption = 'Connect'
    TabOrder = 0
    OnClick = BconnectClick
  end
...

Kann ich dort eigendlich auch meine TClientSocket per Hand einfügen?
Es gibt ne Socket Komponente? Hab irgendwie keine gefunden :(
Ich habe Delphi 7 - Enterprise zur info...

Aber warum bekomm ich in dem oben genannten Beispiel eine Fehlermeldung?
Wo liegt da mein Fehler?
Ich find ihn nicht :wall:

Edit: Hab nun mal alles nochmal vereinfacht nachgebaut, vielleicht findet ja wer den Fehler...
Ich seh ihn irgendwie net...

Code:
unit SC1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;

type
  TForm1 = class(TForm)
    Bconnect: TButton;
    EIp: TEdit;
    EPort: TEdit;
    BDisconnect: TButton;
    procedure FormCreate(Sender: TObject);
    procedure BconnectClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure BDisconnectClick(Sender: TObject);
    procedure ClientSocketConnect(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  ClientSocket : TClientSocket;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ClientSocket := TClientSocket.Create(nil);
  ClientSocket.OnConnect := ClientSocketConnect;
end;

procedure TForm1.BconnectClick(Sender: TObject);
begin
  ClientSocket.Host := EIp.Text;
  ClientSocket.Port := StrToInt(EPort.Text);
  ClientSocket.Open;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  ClientSocket.Destroy;
  ClientSocket := nil;
end;

procedure TForm1.BDisconnectClick(Sender: TObject);
begin
  ClientSocket.Close;
end;

procedure TForm1.ClientSocketConnect(Sender: TObject);
begin
  BConnect.Enabled := False;
  BDisconnect.Enabled := True;
end;

end.
In der Zeile ClientSocket.OnConnect := ClientSocketConnect;
kommt der Fehler: [Fehler] SC1.pas(37): Inkompatible Typen: 'Liste der Parameter ist unterschiedlich'
und ka warum...

MFG Keda

SirThornberry 19. Sep 2004 18:24

Re: Ereignisbehandlungsroutinen... Wie???
 
OnConnect von TClientsocket ist vom Typ "TSocketNotifyEvent" und das ist wie folgt definiert:
Delphi-Quellcode:
TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;

Kedariodakon 19. Sep 2004 18:48

Re: Ereignisbehandlungsroutinen... Wie???
 
Zitat:

Zitat von SirThornberry
OnConnect von TClientsocket ist vom Typ "TSocketNotifyEvent" und das ist wie folgt definiert:
Delphi-Quellcode:
TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;

So ein Mist aber auch, dass ich das übersehen konnte...
Big THX nu funzt alles :hello: :hello:


MFG Keda


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr.
Seite 1 von 2  1 2      

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