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 woher wisst ihr von welcher klasse ihr ableitet? (https://www.delphipraxis.net/28594-woher-wisst-ihr-von-welcher-klasse-ihr-ableitet.html)

Pseudemys Nelsoni 26. Aug 2004 17:54


woher wisst ihr von welcher klasse ihr ableitet?
 
hi,

ich frage mich woher ihr wisst von welcher klasse ihr etwas ableiten wollt.
Ich hatte vor eine neue Komponente zu schreiben (fürs irc). Die komponente TClientSocket wäre perfekt gewesen WENN man die properties die sie bereits hat ausblenden könnte (also das published zeugs)....da das aber nicht geht hab ich mir die 2 vorgänger angeguckt TCustomSocket und TAbstractsocket... aber egal von welcher der beiden ich meine komponente ableite... wenn ich sie dann nachher auf meine form setze und starte gibts direkt fehler wie "abstrakter fehler"...
Naja...was kann ich jetzt tun? ich wollte eigentlich nicht TControl verwenden und dann das ganze Neu schreiben müssen :cry:

Robert_G 26. Aug 2004 17:59

Re: woher wisst ihr von welcher klasse ihr ableitet?
 
Du bekommst nur dann einen abstract error wenn du versuchst eine abstrakte Klasse zu instanzieren.
Beliebter Fehler ist zum Bleistift:
Delphi-Quellcode:
var
  MySL :TStrings;
begin
  MySL := TStrings.Create();
end;
Nachtrag:

Du musst IMHO alle abstrakten Methoden in deinem Descendant überschreiben, bevor du sie verwenden kannst.
Bitte nicht schlagen wenn's nochmal knallt -> ich bin fast kein Delphianer mehr. :/

Pseudemys Nelsoni 26. Aug 2004 18:15

Re: woher wisst ihr von welcher klasse ihr ableitet?
 
hallo robert,

Zitat:

Du bekommst nur dann einen abstract error wenn du versuchst eine abstrakte Klasse zu instanzieren.
was ich ja automatisch tue, wenn ich eine kompo auf meine form schiebe.

Zitat:

Du musst IMHO alle abstrakten Methoden in deinem Descendant überschreiben, bevor du sie verwenden kannst.
auch die die ich nie verwenden werde?

nailor 26. Aug 2004 18:20

Re: woher wisst ihr von welcher klasse ihr ableitet?
 
robert hat recht. einfach mit ner leeren funktion oder einer exception füllen. dann geht es.

SirThornberry 26. Aug 2004 18:29

Re: woher wisst ihr von welcher klasse ihr ableitet?
 
was auch noch geht:
Delphi-Quellcode:
  TMyNewClass = TComponent
  private
    fClientSocket: TClientSocket;
    procedure fSetActive(AValue: Boolean);
    function fGetActive: Boolean;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;

    //place here the properties you wish to use from fClientSocket outside this class
    property Active: Boolean read fGetActive write fSetActive;
  end;

constructor TMyNewClass.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  fClientSocket := TClientSocket.Create(Self);
end;

destructor TMyNewClass.Destroy;
begin
  fClientSocket.Free;
  inherited Destroy;
end;

procedure TMyNewClass.fSetActive(AValue: Boolean);
begin
  fClientSocket.Active := AValue;
end;

function TMyNewClass.fGetActive: Boolean;
begin
  result := fClientSocket.Active;
end;
Also einfach in einer neuen klasse, private die gewünschte klasse erstellen und dann die methoden die man public haben will durch eigene Methoden bereit stellen

Pseudemys Nelsoni 26. Aug 2004 20:15

Re: woher wisst ihr von welcher klasse ihr ableitet?
 
hi ich habe con tabstract socket nun eine komponente abgeleietet....alle avstrakten methodne überschrieben (mit keinem stück code)...hab die kompo auf die form geschoben und gestartet...und natürlich immernoch fehler.... hat noch jemand ne idee?

so sieht sie derzeit aus...

Delphi-Quellcode:
unit TSClientSocket;

interface

uses
  ScktComp, Classes, SysUtils;

type TTSServer = (tsEuro, tsPacific, tsUS);

type
  TTSClientSocket = class(TAbstractSocket)
  private
    FNick: string;
    FPassword: string;
    FSerial: string;
    FTSServer: TTSServer;
    FOnPing: TNotifyEvent;
  protected
    procedure Event(Socket: TCustomWinSocket; ErrorEvent: TSocketEvent); override;
    procedure Error(Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer); overload;
    procedure DoActivate(Value: Boolean); overload;
  published
    property Nick: string read FNick write FNick;
    property Password: string read FPassword write FPassword;
    property Serial: string read FSerial write FSerial;
    property Server: TTSServer read FTSServer write FTSServer;
  end;

procedure Register;

implementation

procedure TTSClientSocket.Event(Socket: TCustomWinSocket; ErrorEvent: TSocketEvent);
begin
  case ErrorEvent of
    seConnect:
      begin
        with Socket do
        begin
          SendText('CVERS 11015 4608' + #13#10);
          SendText('PASS supersecret' + #13#10);
          SendText('NICK ' + FNick + #13#10);
          SendText('apgar ' + FPassword + #13#10);
          SendText('Serial ' + FSerial + #13#10);
          SendText('USER UserName HostName irc.westwood.com :RealName' + #13#10);
          SendText('VERCHK 32512 720911' + #13#10);
          SendText('SETOPT 16,32' + #13#10);
        end;
      end;
    seRead:
      begin
        // später
      end;
  end;
end;

procedure TTSClientSocket.Error(Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin

end;

procedure TTSClientSocket.DoActivate(Value: Boolean);
begin

end;

procedure Register;
begin
   RegisterComponents('blubb', [TTSClientSocket]);
end;

end.

was is da noch falsch? ich muss ja irgendwi ne komponente von TAbstractSocket ableiten koennen :\

Nothine 26. Aug 2004 20:19

Re: woher wisst ihr von welcher klasse ihr ableitet?
 
mach mal bitte in die prozeduren Error und DoActivate kommentare rein, weil im moment sind die funktionen leer und werden deswegen von delphi wieder rausgeschmissen, das kannst (und müsst :roll:) du aber verhindern, z.B. mit // oder sowas wie Beep :mrgreen:

Pseudemys Nelsoni 26. Aug 2004 20:27

Re: woher wisst ihr von welcher klasse ihr ableitet?
 
nein auch mit kommentaren gehts nicht, achman das ist echt alles doof

Nothine 26. Aug 2004 20:33

Re: woher wisst ihr von welcher klasse ihr ableitet?
 
und wie siehts mit Beep aus? nichtssagend aber prozedur-füllend :mrgreen:

Pseudemys Nelsoni 26. Aug 2004 20:34

Re: woher wisst ihr von welcher klasse ihr ableitet?
 
auch fehler :cry:


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