Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Unerklärlicher Fehler: Compiler meldet E2217 ... (https://www.delphipraxis.net/170117-unerklaerlicher-fehler-compiler-meldet-e2217.html)

PeterPanino 31. Aug 2012 21:54

Unerklärlicher Fehler: Compiler meldet E2217 ...
 
Hallo! Ich verwende folgende Klassendefinition:
Delphi-Quellcode:
type
  TSelection = class(TGraphicControl)
  private
    FSelRect: Trect;
    FHitRegion: Integer;
    FHitPoint: TPoint;
    FOldSelRectWidth: Integer;
    FOldSelRectHeight: Integer;
    FHorizontalMargins: Boolean;
    FFactorV, FFactorH: Extended;
    FSelFrameRect: TRect;
    FShowSize: Boolean;
    FTheImage: TImage;
    procedure SetShowSize(const Value: Boolean);
    procedure SetTheImage(const Value: TImage);
  protected
    procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); inline;
    procedure Paint; override;
    procedure Resize(Sender: TObject);
    procedure SetSelFrameMargins; inline;
  public
    Constructor Create(AOwner: TComponent); override;
    property SelFrameRect: TRect read FSelFrameRect;
  published
    property ShowSize: Boolean read FShowSize write SetShowSize;
    property TheImage: TImage read FTheImage write SetTheImage;
  end;
Ein Projekt, in dem ich diese Komponente und andere zusätzlich Standard-Komponenten verwende, compiliert ohne Probleme. ABER: Sobald ich einen TButton zum Formular hinzufüge, kommt die Compiler-Fehlermeldung:

"[DCC Fehler] Unit1.pas(13): E2217 Published-Feld 'Selection1' ist weder vom Typ class noch interface"

und der Cursor springt zu Selection1: TSelection; in der Formular-Deklaration. Aber jetzt kommt's: Auch wenn ich den Button wieder entferne, kommt immer wieder die gleiche Compiler-Fehlermeldung!!!

Die einzige Abhilfe ist die Erstellung eines völlig neuen Projektes mit den gleichen Komponenten, bis - ja bis zum Einfügen eines TButtons ...

Wer weiß, was die Ursache des Problems sein könnte und wie man eine Lösung finden könnte?

Edit: Wenn ich nach dem Entfernen des Buttons auch Vcl.StdCtrls aus der uses-Klausel entferne, dann verschwindet die Fehlermeldung wieder. Offenbar ist eine der Deklarationen in meiner Klasse inkompatibel mit Vcl.StdCtrls.
Welche Regeln muss man bei der Klassendeklaration befolgen, um solche Inkompatibilitäten mit bestehenden Klassen zu vermeiden?

p80286 31. Aug 2012 22:27

AW: Unerklärlicher Fehler: Compiler meldet E2217 ...
 
versuch es doch mal mit TmySelection.

Aus der Delphi-Hilfe:
Zitat:

TSelection is used internally in Delphi to hold the start and end position of a selection.
Gruß
K-H

PeterPanino 31. Aug 2012 22:38

AW: Unerklärlicher Fehler: Compiler meldet E2217 ...
 
Ja,das war der Fehler, wie ich inzwischen herausgefunden habe.

Wäre es nicht gut, wenn die IDE eine Warnung beim Erstellen inkompatibler Klassennamen ausgeben würde. Die IDE kennt ja alle Suchpfade. Ich kann mir vorstellen, dass bei der Vielzahl von Klassennamen und Deklarationen dieser Fehler schon öfter mal auftritt. War schon auch öfter mal so bei etablierten professionellen Komponenten-Herstellern ...

p80286 31. Aug 2012 22:48

AW: Unerklärlicher Fehler: Compiler meldet E2217 ...
 
Seit wann sind die Fehlermeldungen, die man erhält sofort verständlich??:wink:

Gruß
K-H

himitsu 31. Aug 2012 23:02

AW: Unerklärlicher Fehler: Compiler meldet E2217 ...
 
Obwohl es ja nicht so ist, als wenn Delphi nichts hilft.

Zitat:

und der Cursor springt zu Selection1: TSelection; in der Formular-Deklaration
Man hätte ja mal nachgucken können, welches TSelection er genau meint. (Code Insigt wurde nicht umsonst erfunden)

Gut, Emba könnte in solchen Fehlermeldungen mal die vollqualifizieren Namen nennen, dann wäre es eindeutiger.

PeterPanino 31. Aug 2012 23:03

AW: Unerklärlicher Fehler: Compiler meldet E2217 ...
 
Zitat:

Zitat von p80286 (Beitrag 1180924)
Seit wann sind die Fehlermeldungen, die man erhält sofort verständlich??:wink:

Gruß
K-H

Nun, es ist ja anzunehmen (oder wenigstens zu hoffen), dass die kollektive Intelligenz der Programmierer-Gattung im Laufe der Entwicklung ja auch einmal zunimmt, oder ...? ;-)

PeterPanino 31. Aug 2012 23:07

AW: Unerklärlicher Fehler: Compiler meldet E2217 ...
 
Zitat:

Zitat von himitsu (Beitrag 1180928)
Man hätte ja mal nachgucken können, welches TSelection er genau meint.

Mach ich beim nächsten Mal. Versprochen.


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