Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi signed and unsigned types (https://www.delphipraxis.net/200111-signed-unsigned-types.html)

EWeiss 21. Mär 2019 08:52

signed and unsigned types
 
Zitat:

[DCC Warning] uSpectrum.pas(760): W1024 Combining signed and unsigned types - widened both operands
Wie kann ich die kombinieren da ich nicht erkenne was signed ist und was nicht.

Delphi-Quellcode:
a := a + (((c and 4278190080) div 16777216) and 255);
a := (((Buf[dx, dy] and 4278190080) div 16777216) and 255) - d;

gruss

p80286 21. Mär 2019 09:07

AW: signed and unsigned types
 
Zitat:

Zitat von EWeiss (Beitrag 1428234)
Wie kann ich die kombinieren da ich nicht erkenne was signed ist und was nicht.

Und wo sind die Definitionen? Da sollte man das erkennen können.

Gruß
K-H

Neutral General 21. Mär 2019 09:08

AW: signed and unsigned types
 
Du erkennst was Singed und Unsinged ist am Datentyp.
Von daher wäre es hilfreich gewesen wenn du die Deklaration der Variablen auch gepostet hättest.
Du kannst die Warnung loswerden, indem du entweder die Deklarationen vereinheitlichst oder in der Rechnung durch explizite Casts vereinheitlichst.

EWeiss 21. Mär 2019 09:15

AW: signed and unsigned types
 
Zitat:

Du erkennst was Singed und Unsinged ist am Datentyp.
Davon bin ich auch ausgegangen ist aber nicht so..

Delphi-Quellcode:
x, y, c, w, h, a, d: Integer;


a und c sind beides Integer.. deshalb frage ich ja hier nach ;) und nun?

Delphi-Quellcode:
a := a + (((c and 4278190080) div 16777216) and 255);


gruss

EWeiss 21. Mär 2019 09:18

AW: signed and unsigned types
 
Zitat:

a := ((((Buf[dx, dy] and 4278190080) div 16777216) and 255) - d;
Das kann ich casten und gut ist.. hoffe das macht nachher keine Problem. "Buf" die Rückgabe ist Byte

Delphi-Quellcode:
a := ((Integer((Buf[dx, dy]) and 4278190080) div 16777216) and 255) - d;


gruss

Stevie 21. Mär 2019 09:31

AW: signed and unsigned types
 
4278190080 ist aber kein Integer...

EWeiss 21. Mär 2019 09:37

AW: signed and unsigned types
 
Zitat:

Zitat von Stevie (Beitrag 1428249)
4278190080 ist aber kein Integer...

Ist er im ersten gecasteten wert auch nicht und da meckert der Compiler nicht mehr.

Delphi-Quellcode:
a := ((Integer((Buf[dx, dy]) and 4278190080) div 16777216) and 255) - d;

ok du meinst dann wohl so!
Delphi-Quellcode:
((Integer(c and 4278190080) div 16777216) and 255);

obwohl c ein Integer ist ? Nun gut sei's drum.. :) verstehe was du meinst der wert (4278190080) passt nicht in einen Integer.

gruss

Neutral General 21. Mär 2019 09:48

AW: signed and unsigned types
 
4278190080 ist ein unsigned int, weil die Zahl zu groß ist für den Datentyp "Integer".
Wenn Buf[dx,dy] ein byte zurückgibt und du dann ein "and $FF000000" (4278190080) darauf anwendest, dann bringt dir das nichts.
Dann kannst du auch direkt "0" schreiben. Was genau hast du da vor?
Und wenn du mit Bitmasken/Bitoperationen arbeitest würde ich dir empfehlen die Hexadezimale Notation zu verwenden - die ist in dem Fall unendlich lesbarer.

EWeiss 21. Mär 2019 09:58

AW: signed and unsigned types
 
Zitat:

Und wenn du mit Bitmasken/Bitoperationen arbeitest würde ich dir empfehlen die Hexadezimale Notation zu verwenden - die ist in dem Fall unendlich lesbarer.
Hatte ich vorher.. habe es geändert um eine einheitliche Berechnung (Ansicht zu haben) durchzuführen kein Mischmasch zwischen DEZ und HEX.

Zitat:

4278190080 ist ein unsigned int, weil die Zahl zu groß ist für den Datentyp "Integer".
Habe es auf Int64 geändert so muss ich nicht konvertieren.

gruss

Neutral General 21. Mär 2019 10:38

AW: signed and unsigned types
 
Und nochmal:
Delphi-Quellcode:
// :
Buf[dx, dy] and 4278190080
Das ergibt IMMER 0 :!: Sicher das du das willst?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:13 Uhr.
Seite 1 von 2  1 2      

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