Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ableitung von TIdTCPServer - Problem mit Konstruktor (https://www.delphipraxis.net/8705-ableitung-von-tidtcpserver-problem-mit-konstruktor.html)

Stevie 10. Sep 2003 15:08


Ableitung von TIdTCPServer - Problem mit Konstruktor
 
Hallo!
Ich hoffe, ihr könnt mir helfen. Ich versuche eine Ableitung von TIdTCPServer zu erstellen. Dabei hab ich ein Problem mit Create.
Delphi-Quellcode:
type
  TMyServer = class(TIdTCPServer)
  private
    FUserManager: TIdUserManager;
    procedure SetUserManager(const Value: TIdUserManager);
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published-Deklarationen }
    property UserManager: TIdUserManager read FUserManager write SetUserManager;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Meine Komponenten', [TMyServer]);
end;

{ TMyServer }

constructor TMyServer.Create(AOwner: TComponent);
var
  ACommandHandler: TIdCommandHandler;
begin
  inherited Create(AOwner); // hab auch schon nur inherited probiert
  SetIntercept(TIdServerIntercept.Create(Self));
  FIntercept.Name := 'Intercept';
  SetIOHandler(TIdServerIOHandlerSocket.Create(Self));
  FIOHandler.Name := 'IOHandler';
  SetThreadMgr(TIdThreadMgrDefault.Create(Self));
  FThreadMgr.Name := 'ThreadMgr';
  SetUserManager(TIdUserManager.Create(Self));
  FUserManager.Name := 'UserManager';
  FUserManager.CaseSensitiveUsernames := True;
  FUserManager.CaseSensitivePasswords := True;
  ACommandHandler := FCommandHandlers.Add;
  ACommandHandler.Command := '/quit';
  ACommandHandler.Disconnect := True;
  ACommandHandler.Name := 'CommandHandlerQuit';
  ACommandHandler.OnCommand := CommandHandlerQuitCommand;
  ACommandHandler.ReplyNormal.NumericCode := CodeCommandQuit;
  ACommandHandler.ReplyNormal.Text.Add(TextCommandQuit);
end;
Wenn ich das override in der Deklaration weglasse, führt er meinen Code nicht aus. Bitte helft mir!!!

Christian Seehase 10. Sep 2003 15:14

Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
 
Moin Stevie,

Zitat:

Zitat von Stevie
Wenn ich das override in der Deklaration weglasse, führt er meinen Code nicht aus. Bitte helft mir!!!

vielleicht hab' ich jetzt irgendwas nicht mitbekommen, aber warum willst Du override weglassen?

Stevie 10. Sep 2003 15:20

Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
 
Öhm, was red (schreib) denn da??? Natürlich darf ich das override nicht weglassen! Mien Prob ist, dass die Erstellung dieser Komponenten
Delphi-Quellcode:
  SetIntercept(TIdServerIntercept.Create(Self));
  FIntercept.Name := 'Intercept';
  SetIOHandler(TIdServerIOHandlerSocket.Create(Self));
  FIOHandler.Name := 'IOHandler';
  SetThreadMgr(TIdThreadMgrDefault.Create(Self));
  FThreadMgr.Name := 'ThreadMgr';
nicht so geschieht, wie wenn ich sie auf ein Form packen würde und die beim TIdTCPServer eintragen würde! Warum?

Christian Seehase 10. Sep 2003 15:40

Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
 
Moin Stevie,

was passiert denn nicht so wie gewünscht?

Stevie 10. Sep 2003 15:48

Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
 
Die Komponenten, die ich erstellen möchte, werden zwar in den Eigenschaften angezeigt, aber unter Methoden erscheinen sie nicht.
Wenn ich zum Beispiel ein TIdServerIOHandlerSocket auf das Form packe, wird es in der Dropdown-Liste von TIdTCPServer angezeigt. Wähle ich es aus, steht unter Ereignisse das Ding und wenn ich auf das Plus klicke, kann ich das Ereignis OnStatus sehen.
Mach ich das so, wie oben beschrieben, dann taucht es eben nicht auf.
Ich hab auch schon das hier versucht(klappt aber ebenso wenig):
Delphi-Quellcode:
IOHandler := TIdServerIOHandlerSocket.Create(Self);
IOHandler.Name := 'IOHandler';

Christian Seehase 10. Sep 2003 16:25

Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
 
Moin Stevie,

Zitat:

Zitat von Stevie
Wähle ich es aus, steht unter Ereignisse das Ding und wenn ich auf das Plus klicke, kann ich das Ereignis OnStatus sehen.

das hab' ich gerade mal ausprobiert, und frage mich, was Du meinst.
Welches Plus?
Beide Kompos haben ein OnStatus Ereignis, und das was bei Deiner Kompo zu sehen sein dürfte wäre das des TidTCPServers.

Stevie 11. Sep 2003 07:55

Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
 
Liste der Anhänge anzeigen (Anzahl: 3)
Ich hab mal drei Screenshots gemacht, die das erklären dürften.
Bei dem ersten hab ich ganz normal einen TIdTCPServer auf ein Formular gepackt, außerdem noch TIdThreedMgrDefault und TIdServerIOHandlerSocket.
Die beiden hab ich dann beim TIdTCPServer unter ThreadMgr und IOHandler eingetragen.

Bei dem zweiten und dritten hab ich meine Komponente genommen, in der ich im Konstruktor diese beiden Komponenten wie schon weiter oben gezeigt eingefügt habe.

Das Problem scheint doch zu sein, dass die Komponenten nicht richtig angelegt werden, oder? Auf jeden Fall nicht so, als wenn ich sie "ganz normal" erstelle.

Kann mir jetzt jemand helfen???

Christian Seehase 11. Sep 2003 11:49

Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
 
Moin Stevie,

jetzt hab' ich das mit dem Plus verstanden ;-)
So sieht es, wenn ich die Kompos manuell auf das Formular lege nämlich unter D5 nicht aus. Da ist es so wie bei Deinem dritten Screenshot.

Eine Idee:
Benutze mal als Owner nicht self, sondern AOwner.

Sollte das auch noch nicht weiterhelfen, könntest Du mal versuchen, ob es einen Unterschied macht (kann ich mir bei dieser Kompo eigentlich nicht vorstellen...), wenn Du die Unterkompos in der Methode CreateWnd erzeugst (wichtig: Sicherstellen, dass dies dort nur einmal geschieht).
Beispiele für Hier im Forum suchenCreateWnd solltest Du hier auch finden.

Stevie 11. Sep 2003 12:21

Re: Ableitung von TIdTCPServer - Problem mit Konstruktor
 
:dancer: Jippieeeeeee! Mit AOwner klappt es!!!!! :dancer2:
... Bleiben nur noch dröfundneunzig andere Probleme!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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