Einzelnen Beitrag anzeigen

Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
119 Beiträge
 
Delphi XE2 Professional
 
#1

Problem bei Ableitung von TIdTCPClient (Override von Create)

  Alt 9. Dez 2008, 08:39
Guten Morgen,


im Internet habe ich einen Komponentensatz für die digitale Märklin-Eisenbahnsteuerung gefunden, den ich gerne in meinem Lichtprogramm nutzen möchte, um entsprechend die Eisenbahn anzusteuern. Die Komponente stellt normalerweise eine TCP-Verbindung mit einem Server her, der die Hardwareausgabe regelt.
Die Komponente leitet dafür Funktionen vom IdTCPClient der Indys ab und überschreibt einige Grundfunktionen. Leider meckert mein Delphi7 beim Kompilieren: "Eine statische Methode kann nicht überschrieben werden". Dies tritt beim Versuch auf, "Create", "Disconnect" und "Connect" zu überschreiben.

Ich nutze Delphi7 und die Indys in der Version 10.

Wonach muss ich suchen, um den Fehler zu finden? Ich habe in den Sources der Indys mal geschaut, aber dort sind die Funktion ganz normal deklariert (jedenfalls für meine Augen)?


Hier ein Teil des Codes der Komponente:
Delphi-Quellcode:
  TSRCPBaseClient = class(TIdTCPClient)
  private
    FLogEnabled: Boolean;
    FSessionID: Integer;
    FOnLog: TLogEvent;
    FOnError: TNotifyEvent;
    FClientMode: TSRCPClientMode;
    FServerVersions: Set of TSRCPCommandVersion;
    FVersion: TSRCPCommandVersion;
    FResponse: String;
    FOnDisconnected: TNotifyEvent;
    procedure ReceiveWelcome;
    procedure SetUsedVersion;
    procedure SetConnectionMode;
    procedure StartClient;
    procedure SetClientMode(const Value: TSRCPClientMode);
    procedure DoLog(const S: String);
    procedure DoError;
    procedure HandleOnDisconnect(Sender: TObject);
    function DoReceiveAnswer(Cmd: TSRCPCmd; S: String): Boolean;
  protected
    procedure SetVersion(const Value: TSRCPCommandVersion);virtual;
    procedure DoDisconnect;virtual;
  public
    constructor Create(AOwner: TComponent); override; // <-- HIER MECKERTS (STATISCHE METHODE KANN NICHT ÜBERSCHRIEBEN WERDEN)
    destructor Destroy; override;
    procedure SendCommand(Cmd: TSRCPCmd);
    function ReceiveAnswer(Cmd: TSRCPCmd): Boolean;
    procedure Connect(const ATimeout: Integer = IdTimeoutDefault); override; // <-- HIER MECKERTS (CONNECT NICHT GEFUNDEN)
    procedure Disconnect; override; // <-- HIER MECKERTS (STATISCHE METHODE KANN NICHT ÜBERSCHRIEBEN WERDEN)
    property ClientMode: TSRCPClientMode read FClientMode write SetClientMode;
    property SessionID: Integer read FSessionID;
    property Response: String read FResponse;
  published
    property LogEnabled: Boolean read FLogEnabled write FLogEnabled default False;
    property Version: TSRCPCommandVersion read FVersion write SetVersion default cv082;
    property OnError: TNotifyEvent read FOnError write FOnError;
    property OnLog: TLogEvent read FOnLog write FOnLog;
    property OnDisconnected: TNotifyEvent read FOnDisconnected write FOnDisconnected;
  end;


Vielen Dank für ein paar Tipps
Christian
Christian Nöding
  Mit Zitat antworten Zitat