Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Color als integer (https://www.delphipraxis.net/166335-color-als-integer.html)

Bjoerk 8. Feb 2012 16:25

Color als integer
 
Ich stelle gerade ein riesen Grafik Projekt auf OOP um. Da sind alle Color als integer deklariert. Da ich eh schon kurz vor'nem verschärften Nervenzusammenbruch stehe, wollte ich fragen ob Typ TColor unbedingt erforderlich ist, oder ob’s die integer auch tun, oder geht das schief, wegen Maxint+1 meine ich. Wird dieser Wert tatsächlich jemals benutzt?

Uwe Raabe 8. Feb 2012 16:29

AW: Color als integer
 
Das mit MaxInt habe ich jetzt nicht ganz verstanden, aber in XE2 ist
Delphi-Quellcode:
TColor = -$7FFFFFFF-1..$7FFFFFFF;

himitsu 8. Feb 2012 16:32

AW: Color als integer
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1149907)
Delphi-Quellcode:
TColor = -$7FFFFFFF-1..$7FFFFFFF;

-$80000000..$7FFFFFFF = LongInt

Bjoerk 8. Feb 2012 16:55

AW: Color als integer
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1149907)
Das mit MaxInt habe ich jetzt nicht ganz verstanden, aber in XE2 ist
Delphi-Quellcode:
TColor = -$7FFFFFFF-1..$7FFFFFFF;

Ist -$7FFFFFFF-1 nicht eins mehr als -Maxint ? Check grad nix mehr..

himitsu 8. Feb 2012 16:59

AW: Color als integer
 
-$7FFFFFFF - 1 = -($7FFFFFFF + 1)

Abs(MinInt) = MaxInt + 1
, da es keine -0 gibt

Bjoerk 8. Feb 2012 17:26

AW: Color als integer
 
Color:= TColor(ini.ReadInteger.. und normal integer schreiben. Stimmt das ?

Edit: äh, mal dumm gefragt, was ist eigentlich der unterschied zwischen integer und longint überhaupt ??

himitsu 8. Feb 2012 17:44

AW: Color als integer
 
LongInt ist ein statischer/nativer Typ, so wie der AnsiString.

Integer ist war mal ein wachsender / sich anpassender Typ.
In einem Win16-Compiler (Delphi 1) war er 16 Bit.
In einem Win32-Compiler ist er 32 Bit.
Und wenn man für Win64 kompiliert wäre er 64 Bit gewesen.

So wie String bis D2007 ein AnsiString war und seit D2009 ein UnicodeString ist.

(OK, irgend C-Idiot ist auf die Idee gekommen den Integer einzufriehren und dafür den NativeInt zu erfinden, weswegen der Integer auch unter Win64 einem LongInt entspricht)


PS: Weil ich diesen Sch*** nicht mitmache, wird der Integer, in meinen Codes, auch in Zukunft weiterhin mitwachsen. :twisted:

Bjoerk 8. Feb 2012 17:50

AW: Color als integer
 
Okay, verstehe. Und wenn logint ein integer32 ist, kann ich dann meine colors als integer lassen? :gruebel:

himitsu 8. Feb 2012 18:00

AW: Color als integer
 
Besser als LongInt.

Vom Wertebereich her stellt TColor ja explizit den selben nativen Wertebereich des LongInt dar.

Delphi-Quellcode:
type
  TUrColor = -$7FFFFFFF-1..$7FFFFFFF;
  TMeinColor = type LongInt;

Blup 9. Feb 2012 10:48

AW: Color als integer
 
Es sollte allerdings klar sein, das man auf die Daten einer TBitmap bei der Bildverarbeitung gewöhnlich über Scanline() zugreift. Wie die einzelnen Pixel dort codiert sind hängt vom Pixelformat ab, aber in keinem Fall als TColor.

himitsu 9. Feb 2012 10:52

AW: Color als integer
 
Zitat:

Zitat von Blup (Beitrag 1150052)
Es sollte allerdings klar sein, das man auf die Daten einer TBitmap bei der Bildverarbeitung gewöhnlich über Scanline() zugreift. Wie die einzelnen Pixel dort codiert sind hängt vom Pixelformat ab, aber in keinem Fall als TColor.

Davon würde ich Anfängern eher abraten.

- geometrische Figuren zeichnen sich leichter über das Canvas oder evewntuell auch via HDC+API
- bei Scanline muß man das zugrundeliegende Datenformat kennen und beachten (Pixels nimmt das einem ab)
- und wenn es nicht unbedingt auf Geschwindigkeit und Pixelzugriffe geht, ist das Canvas auch besser (ansonsten muß man sich besser mal mit den Interna beschäftigen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 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 by Thomas Breitkreuz