AGB  ·  Datenschutz  ·  Impressum  







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

Wie geerbte Ereignisse verarbeiten ??

Ein Thema von Net7 · begonnen am 29. Okt 2005 · letzter Beitrag vom 29. Okt 2005
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#21

Re: Wie geerbte Ereignisse verarbeiten ??

  Alt 29. Okt 2005, 18:39
@DustSigns: Du hast geschrieben er soll "OnClientDisconnect" überschreiben. Und OnClientDisconnection ist nur das Event was man nicht überschreiben kann. Bei den meisten komponenten gibt es Methoden welche das Event ausführen und somit kann man diese Methoden überschreiben. Es gibt aber auch den Fall das die Methode welche das Event auslöst nicht dynamic ist und somit kann man diese teilweise auch nicht überschreiben. Es ist also ein Unterschied ob man ein Event überschreibt (was nicht geht) oder die Methode die das event auslöst. "OnClientDisconnect" ist also etwas anderes als ClientDisconnect
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#22

Re: Wie geerbte Ereignisse verarbeiten ??

  Alt 29. Okt 2005, 18:40
Zitat von Dust Signs:
@SirThornberry: und was war dann an meiner Aussage oben falsch? Genau das meinte ich ja...
Du hast gesagt, man müsse die Variable/Property überschreiben, aber das geht eben nur mit der Dispatcher-Methode. Für dich mag das das gleiche sein, aber für einen Anfänger ...

@Net7:
Zitat von SirThornberry:
(ich glaube dir fehlen entscheidende Grundlagen in Delphi)
Passend dazu die Neuerscheinung des Tages: Luckies "Klassen in Delphi"
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#23

Re: Wie geerbte Ereignisse verarbeiten ??

  Alt 29. Okt 2005, 18:54
Zitat von SirThornberry:
ahh, du musst die methode nicht neu schreiben. Wenn du die Funktion überschreibst wird diese aufgerufen (somit bekommst du Kenntnis das diese aufgerufen wurde). Um nun das auszuführen was in der alten methode ausgeführt wurde musst du die funktion nicht neu schreiben sondern rufst einfach mit inherited die alte methode auf! (ich glaube dir fehlen entscheidende Grundlagen in Delphi)

Delphi-Quellcode:
type
  TNet7Server = class(TServerSocket)
  protected
    procedure ClientDisconnect(Socket: TCustomWinSOcket); override;
  [...]

procedure TNet7Server.ClientDisconnect(Socket: TCustomWinSOcket);
begin
  //Hier Source plazieren der ausgeführt werden soll bevor event ausgelöst wird
  inherited ClientDisconnect(Socket); //Damit wird die alte ClientDisconnect-Methode aufgerufen welche unter anderem das OnClientDisconnect auslöst
  //Hier Source plazieren der ausgeführt werden soll nach dem event ausgelöst wurde
end;

Hmmm so habe ich es ja probiert, nur es funktioniert ja nicht, weil mir beim Compilieren der Fehler auftritt.. "Methode ClientDisconnect" nicht in Basisklasse gefunden.

Und ich konnte die richtige Basisklasse auch bis jetzt nicht ermitteln.

Ich helfe mir nun aus in der Anwendung damit die Daten zurückzuvermitteln
in die Komponente.

Delphi-Quellcode:

procedure TForm1.Net7Server1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
     

    
     Net7Server1.ClientDeleteList(Socket);

end;

deklariert in der kompo ist das so

Delphi-Quellcode:
.
.
public

procedure ClientDeleteList(DSocket: TCustomWinSocket);virtual;
.
.
.


Ich weiß das das absolut unelegant ist. Nur was soll ich machen...
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#24

Re: Wie geerbte Ereignisse verarbeiten ??

  Alt 29. Okt 2005, 19:42
Oh, hab gerade in die Socket-Sourcen geschaut... erstens ist es anders und zweitens als man denkt .
TServerSocket bezieht seine gesamten Client-Events von FServerSocket(TServerWinSocket). Du musst also von TServerWinSocket ableiten und dort ClientDisconnect überschreiben. Damit die neue Klasse auch verwendet wird, muss nun FServerSocket auch als diese instanziiert werden. Dazu fallen mir zwei Möglichkeiten ein:
1. Du leitest von TServerSocket ab und überschreibst den Constructor:
Delphi-Quellcode:
begin
  inherited;
  FServerSocket.Free;
  FServerSocket := TMyNewServerWinSocket.Create(INVALID_SOCKET);
end;
Finde ich allerdings nicht ganz so schön, besser ist IMO:
2. Leite von TCustomServerSocket ab, mit folgendem Constructor (Original: TServerSocket.Create):
Delphi-Quellcode:
begin
  inherited Create(AOwner);
  FServerSocket := TMyNewServerWinSocket.Create(INVALID_SOCKET); //<- Veränderung
  InitSocket(FServerSocket);
  FServerSocket.ThreadCacheSize := 10;
end;
Außerdem kopierst du den Interface-Teil von TServerSocket, was aber nicht viel ist (neue Implementierungen gibts auch nicht).

Das Ganze ist also doch nicht so trivial .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#25

Re: Wie geerbte Ereignisse verarbeiten ??

  Alt 29. Okt 2005, 20:07
Zitat von Khabarakh:
... hab gerade in die Socket-Sourcen geschaut...
Öhmmmm.... wie das denn, hast du dir das hikhak aus der DCU angetan???


Tja wird mir wohl nix anderes übrig bleiben das so zumachen wie du vorschlägst.
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#26

Re: Wie geerbte Ereignisse verarbeiten ??

  Alt 29. Okt 2005, 20:25
Zitat von Net7:
Zitat von Khabarakh:
... hab gerade in die Socket-Sourcen geschaut...
Öhmmmm.... wie das denn, hast du dir das hikhak aus der DCU angetan???
Ich könnte einfach "Ja" sagen, aber eigentlich habe ich nur die Pas im "Source"-Ordner geöffnet .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#27

Re: Wie geerbte Ereignisse verarbeiten ??

  Alt 29. Okt 2005, 20:30
Zitat von Khabarakh:
Ich könnte einfach "Ja" sagen, aber eigentlich habe ich nur die Pas im "Source"-Ordner geöffnet .

Tja dann hast du mir eins vorraus, die gibs bei mir irgendwie nicht OnSource..
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 10:31 Uhr.
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