Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Klasse von TTHread ableiten und Interface implementieren, Objekt erstellen (https://www.delphipraxis.net/162996-klasse-von-tthread-ableiten-und-interface-implementieren-objekt-erstellen.html)

sx2008 13. Sep 2011 09:07

AW: Klasse von TTHread ableiten und Interface implementieren, Objekt erstellen
 
Zitat:

Zitat von mika (Beitrag 1123908)
Okai, das hat funktioniert.

Ich halte das für den falschen Weg; siehe oben!
Eine Threadklasse darf kein Interface eines Business-Objekts implementieren, denn Threads sind logisch etwas anderes als Business-Objekte.
Im Moment mag deine Lösung funktionieren; später wirst du merken, dass da etwas nicht richtig läuft.

mika 13. Sep 2011 09:18

AW: Klasse von TTHread ableiten und Interface implementieren, Objekt erstellen
 
Ich werd mir deinen Vorschlag mal durch den Kopf gehen lassen, danke für den Hinweis.

fuchsle 8. Aug 2012 10:02

AW: Klasse von TTHread ableiten und Interface implementieren, Objekt erstellen
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1123600)
Da das IInterfaceMein implizit von IInterface abgeleitet ist, gehören dazu natürlich auch Implementierungen der dort deklarierten Methoden - insbesondere QueryInterface! Da der Compiler schon viel eher meckern würde, wenn diese Methoden nicht in deiner TThread-Ableitung enthalten wären, denke ich daß du die auch tatsächlich implementiert hast.

Wenn du jetzt dem Compiler sagst, daß dein TThread-Abkömmling das IInterface tatsächlich implementiert, sollte es auch gehen:

Delphi-Quellcode:
TMeineKlasse = Class(TThread, IInterface, IInterfaceMein)

Hallo,

ich bin über diesen Beitrag gestoßen, da ich ein Interface in einem Thread nutzen möchte.
Dazu habe ich versucht das oben zitierte umzusetzen.

Wie folgt sieht mein Beispiel aus:
Delphi-Quellcode:
unit Unit2;

interface

uses
  Classes;

type
  IMyInterface = Interface(IInterface)
    procedure setstate;
    function getstate(): Boolean;
    property State: Boolean read getstate write setstate;
  End;

  TMyThread = class(TThread, IInterface, IMyInterface)
  private
    { Private-Deklarationen }
  protected
    procedure Execute; override;
  end;

implementation
Jedoch kommt es zu folgenden Meldungen:
[DCC Fehler] Unit2.pas(15): E2003 Undeklarierter Bezeichner: 'QueryInterface'
[DCC Fehler] Unit2.pas(15): E2003 Undeklarierter Bezeichner: '_AddRef'
[DCC Fehler] Unit2.pas(15): E2003 Undeklarierter Bezeichner: '_Release'

Muss ich diese Methoden doch selbst implementieren?
Bin davon ausgegangen, dass diese vererbt werden.

Vielen Dank.

himitsu 8. Aug 2012 10:10

AW: Klasse von TTHread ableiten und Interface implementieren, Objekt erstellen
 
Zitat:

Zitat von fuchsle (Beitrag 1177290)
Muss ich diese Methoden doch selbst implementieren?
Bin davon ausgegangen, dass diese vererbt werden.

Natürlich mußt du das.

Das Interface selber erbt diese Grundfunktionen, aber woher soll die Klasse diese denn kennen?

TInterfacedObjekt oder TComponent als Vorfahre und man könnte diese erben, aber TThread/TObject kennt das eben nicht.

Iwo Asnet 8. Aug 2012 11:43

AW: Klasse von TTHread ableiten und Interface implementieren, Objekt erstellen
 
Zitat:

Zitat von fuchsle (Beitrag 1177290)
Muss ich diese Methoden doch selbst implementieren?
Bin davon ausgegangen, dass diese vererbt werden.

Ein Interface implementiert nichts, sondern sagt nur, was eine Implementierung mindestens können muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:51 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz