![]() |
tagBitmap vs. TBitmap, falsche unit wird verwendet
ich habe eine neue Unit angelegt und eine Klasse darin erzeugt
Delphi-Quellcode:
unit Unit_TPaintMe;
interface uses types, classes, graphics, SysUtils, system.Generics.collections, VCl.controls, transparentCanvas, windows; MyClass = Class ..... aBmp : TBitmap; end; ich habe aktuell jetzt folgendes Problem : lt. compiler DELPHI XE 10.1 wird jetzt TBitmap aus der unit winapi.Windows vervendet obwohl ich doch vcl.grpahics eingebunden haben. Wie kann ich diesen Fehler finden ? Warum wird die falsche unit für die Klassendefinition verwendet ? |
AW: tagBitmap vs. TBitmap, falsche unit wird verwendet
Definiere "falsch". Beide heißen "TBitmap". Für den Computer sind beide gleich richtig.
In Delphi wird das verwendet was als letztes in der entsprechenden uses-Anweisung vorkam. Entweder definierst du dir darüber deinen eigenen Typ
Delphi-Quellcode:
oder du vertauscht die Reihenfolge der Units in der
type TBitmap = MeineGewünschteUnit.TBitmap
Delphi-Quellcode:
uses
|
AW: tagBitmap vs. TBitmap, falsche unit wird verwendet
ich habe die unit winapi gar nicht in meiner uses Anweisung stehen, ich verstehe nicht woher er die andere TBitmap definition aus der unit winapi holt. Ich habe nur die vcl graphics eingebunden
|
AW: tagBitmap vs. TBitmap, falsche unit wird verwendet
Winapi ist der Namespace, Windows die Unit. Und die ist sehr wohl eingebunden, nämlich als Letztes.
|
AW: tagBitmap vs. TBitmap, falsche unit wird verwendet
Du kannst auch folgendes machen:
Delphi-Quellcode:
aBmp : VCL.Graphics.TBitmap;
Generell hier mal ein kleiner Tipp: Es kann eine Relevanz haben, in welcher Reihenfolge man die Units einbindet. Nach meiner Erfahrung hat sich folgendes bewährt: 1. Zunächst die Betriebssytem Units (Winapi.Windows, usw.) 2. System-Units (System.Sysutils, usw) 3. Plattformunits (VCL. oder FMX.) 4. Units von Drittherstellern (TMS & Co) 5. Eigene Units, die wieder von a) allgemein (tool-units, auch in anderen Projekten verwendet) zu b) Anwendungsspezifisch (also speziell für die aktuelle Anwendung erzeugt. Das strukturiert die ganze Sache und schafft somit den notwendigen Überblick. Hin und wieder kann es erforderlich sein, entweder die Reihenfolge der Einbindung zu ändern, wenn man weiß, dass sonst der falsche Typ für eine Variable verwendet wird, oder eben mit Unit-Qualifizierern (Angabe des "Namespace") zu arbeiten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 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