AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Klasse von TTHread ableiten und Interface implementieren, Objekt erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Klasse von TTHread ableiten und Interface implementieren, Objekt erstellen

Ein Thema von mika · begonnen am 12. Sep 2011 · letzter Beitrag vom 8. Aug 2012
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#11

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

  Alt 13. Sep 2011, 09:07
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.
  Mit Zitat antworten Zitat
Benutzerbild von mika
mika

Registriert seit: 25. Okt 2002
176 Beiträge
 
Delphi 6 Professional
 
#12

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

  Alt 13. Sep 2011, 09:18
Ich werd mir deinen Vorschlag mal durch den Kopf gehen lassen, danke für den Hinweis.
:: don't Panic ::
  Mit Zitat antworten Zitat
fuchsle

Registriert seit: 22. Jul 2011
Ort: Heilbronn
35 Beiträge
 
Delphi XE3 Professional
 
#13

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

  Alt 8. Aug 2012, 10:02
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:

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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#14

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

  Alt 8. Aug 2012, 10:10
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#15

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

  Alt 8. Aug 2012, 11:43
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 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