![]() |
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: |
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:
Nachtrag:
var
MySL :TStrings; begin MySL := TStrings.Create(); end; 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. :/ |
Re: woher wisst ihr von welcher klasse ihr ableitet?
hallo robert,
Zitat:
Zitat:
|
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.
|
Re: woher wisst ihr von welcher klasse ihr ableitet?
was auch noch geht:
Delphi-Quellcode:
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
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; |
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 :\ |
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:
|
Re: woher wisst ihr von welcher klasse ihr ableitet?
nein auch mit kommentaren gehts nicht, achman das ist echt alles doof
|
Re: woher wisst ihr von welcher klasse ihr ableitet?
und wie siehts mit Beep aus? nichtssagend aber prozedur-füllend :mrgreen:
|
Re: woher wisst ihr von welcher klasse ihr ableitet?
auch fehler :cry:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr. |
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