Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   tagBitmap vs. TBitmap, falsche unit wird verwendet (https://www.delphipraxis.net/192782-tagbitmap-vs-tbitmap-falsche-unit-wird-verwendet.html)

bernhard_LA 18. Mai 2017 14:35

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 ?

Der schöne Günther 18. Mai 2017 14:39

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:
type TBitmap = MeineGewünschteUnit.TBitmap
oder du vertauscht die Reihenfolge der Units in der
Delphi-Quellcode:
uses

bernhard_LA 18. Mai 2017 19:27

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

DeddyH 18. Mai 2017 19:29

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.

Harry Stahl 18. Mai 2017 21:12

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 06:46 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