Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   tbitmap und unit windows (https://www.delphipraxis.net/152917-tbitmap-und-unit-windows.html)

1234567890987654321 12. Jul 2010 20:36

tbitmap und unit windows
 
Hallo,
wenn ich die Unit Windows einbinde, und jetzt mir eine tbitmap variable mache, kann ich keine Funktionen/Prozeduren von tbitmap ausführen lassen.
Code:
uses windows
//...
var b: tbitmap;
//...
b:=tbitmap.//hier gibts nur noch variablen, es gibt nicht mal mehr .create

mirage228 12. Jul 2010 20:38

AW: tbitmap und unit windows
 
Edit: TBitmap ist meines Wissens nach Unit Graphics, nicht Windows.

Ansonsten:
Kommt den ein Fehler beim Compilieren, wenn Du .Create() schreibst?

Ggf. gibt es vorher im Quelltext auch Syntaxfehler. Dadurch könnte die Code-Completion evtl. aus dem Tritt kommen.

Keldorn 12. Jul 2010 20:41

AW: tbitmap und unit windows
 
Hallo

Du hast zwar groß "Lazarus" drunter stehen, in Delphi würdest du das so beheben, daß deine unit-reihefolge "uses windows" und danach "graphics" sein muß.

Gruß Frank

JamesTKirk 17. Jul 2010 21:33

AW: tbitmap und unit windows
 
Hi!

Zitat:

Zitat von 1234567890987654321 (Beitrag 1035023)
Hallo,
wenn ich die Unit Windows einbinde, und jetzt mir eine tbitmap variable mache, kann ich keine Funktionen/Prozeduren von tbitmap ausführen lassen.
Code:
uses windows
//...
var b: tbitmap;
//...
b:=tbitmap.//hier gibts nur noch variablen, es gibt nicht mal mehr .create

TBitmap in der Unit Windows hat nichts :!: mit dem TBitmap aus Graphics zu tun (welches du verwenden möchtest). Du bist übrigens nicht der erste der darauf "reinfällt" (ist mir auch schon passiert :mrgreen: ).

Also du musst entweder, wie Keldorn geschrieben hat, die Reihenfolge von der Windows und der Graphics Unit in der Uses vertauschen oder du schmeißt die Unit Windows ganz raus und versuchst mit den Abstraktionen in LCLIntf (welche zusätzlich plattformunabhängig sind) zu arbeiten, in der kein konkurrierendes TBitmap definiert ist. Dies geht auch meistens gut, es sei denn du verwendest Funktionen, die wirklich Windows-spezifisch sind (z. B. irgendwie Shell bezogen).

Gruß,
Sven

sx2008 17. Jul 2010 22:30

AW: tbitmap und unit windows
 
Man kann auch die Unit vor den Datentyp stellen:
Delphi-Quellcode:
var b: Graphics.TBitmap;
//...
b:=Graphics.TBitmap.Create;
Diesen "Trick" verwende ich manchmal, wenn nicht genau klar ist was gemeint ist wie z.B. SysUtils.Date oder Math.Max.


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