Einzelnen Beitrag anzeigen

Benutzerbild von Net7
Net7

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

Re: Wie geerbte Ereignisse verarbeiten ??

  Alt 29. Okt 2005, 13:08
Zitat von SirThornberry:
wie? du schreibst in der originalen Klasse herum?? Mach das bloß nicht!! Der Sinn von oop ist das man ableiten kann und somit nicht jedesmal am original herum basteln muss.
mom ich geb mal bissel quellcode

Delphi-Quellcode:

unit Net7Server;

interface

uses
  SysUtils, Classes, ScktComp,Forms;


  // Primärheader
  Type
     TPHead=record
     Size :Longword;
     end;

   // Sekundärheader

   Type
     TSHead=record
     TPSize :Longword; //Lange komplettes Paket
     Size :Longword; // Länge der Kern Daten
     Typ : Integer; // Typ der Daten
     end;


   // Statisches Hilfspaket
   Type
     THilfspaket=record
      PriHead : TPHead;
      SecHead : TSHead;
      Datenbuffer : array[0..512000] of byte;
     end;


     Type
     TClientenverwaltung=record
     Con :array [0..100] of Integer;
     HNr :array [0..100] of Integer;
     isOnline :array [0..100] of boolean;
     end;

    Type
     AHandles=array [0..100] of Integer;
     ACon=array [0..100] of Integer;
// Event erstellen das Datentyp und Grösse wiedergibt
TDatenVerarbeitungEvent = procedure (Sender:TObject;var DatenTyp:Integer;var DatenSize:Longword) of object;


const LOGFILE = 'LogFile.log';

 type
  TNet7Server = class(TServerSocket)
  private
    { Private-Deklarationen }

       //Variablen für Datenempfang Statisch
       PriHead : TPHead; // Header
       Datenbuffer : Pointer; // Hauptbuffer, dort lagern die empf. Daten
       PriDatensize : Longword; // Grösse kompl. Paket
       SecDatensize : Longword; // Grösse Kerndaten
       BufferPosition : Longword; // Lesezeichen für Receive Buffer
       NetDatensize : Longword; // Grösse des TCP-Pakets
       Modus : Integer; // Modusschalter, Lesen oder Ignorieren
       ErstesPaket : Boolean; // ..
       fertig : boolean; // ...
       Dummypaket : THilfspaket; //...
       ExportDatentyp : Integer; // Datentyp







    //Clientverwaltung
       CV:TClientenverwaltung;
        CVZaehler :Integer;



    //Event gibt später Datentyp und Size zurück
    FOnVerarbeitung:TDatenVerarbeitungEvent;

    FOnDisconnect:TSocketNotifyEvent;
    //Interner Logger
    function DebugLog(LogString: String;Varwert:integer;Zeilennummer:integer): Integer; virtual;


  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }

   function Datenempfang(Client_Verbindungsnummer:integer):boolean; virtual;
   function Datenverarbeitung(var Exportdaten):boolean;virtual;

   function ClientListNow(var EHandles;Var EConnections):boolean;Virtual;



   procedure InitNet7Server;virtual;
   procedure ClientOnList;virtual;
   procedure ClientDeleteList;virtual;
   //function Sendedaten(var Importdaten:pointer;Importdatensize:Longword;ImportDatentyp:Integer):boolean;virtual;


   procedure ClientDisconnect(Socket: TCustomWinSOcket); dynamic;


  published
    { Published-Deklarationen }
   // Eventproperty
   property OnVerarbeitung:TDatenVerarbeitungEvent read FOnVerarbeitung write FOnVerarbeitung ;

   //property ClientDisconnect:TSocketNotifyEvent read FOnClientDisconnect write FOnClientDisconnect;



  end;




procedure Register;









implementation





procedure Register;
begin
  RegisterComponents('Marko', [TNet7Server]);
end;
.
.
.

Sie ist abgeleitet von der Klasse.
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