![]() |
AW: EIntOverflow bei LongWord, nicht aber bei Word
Das wird eh immer langser, von Version zu Version ... das bissl fällt dann auch nicht mehr auf, wenn es noch rein käme.
Es hab auch mehrere Versionen lang einen Bug, wo UInt64/LargeWord vei einigen Berechnungen als Int64 behandelt wurde. Bissl was wird doch irgendwann repariert. In 32 Bit ist Int64 und UInt64 emuliert und wird "langsam" über zwei Integer/Cardinal manuell berechnet. Darum sträubt sich Delphi auch, Integer dahin automatisch etwas zu erweitern. |
AW: EIntOverflow bei LongWord, nicht aber bei Word
Zitat:
Ernsthaft: Was lernen wir nun aus der Geschichte? Muss ich es jetzt für alle Datentypen die es grade gibt durchprobieren und mir dann einen Zettel an den Monitor kleben "Vorsicht, bei Rechnen mit folgenden Typen..." Es ist doch sicher irgendwo dokumentiert "Word mit Word verrechnen ergibt DWord", "DWord mit DWord verrechnen ergibt DWord", ... |
AW: EIntOverflow bei LongWord, nicht aber bei Word
Zitat:
Manche nennen es auch QUADWORD. Bestimmt wird es in naher Zukunft auf OWORD/OCTOWORD o.ä. erweitert (128bit) |
AW: EIntOverflow bei LongWord, nicht aber bei Word
Wenn dem so wäre gäbe es dieses Thema nicht denn dann hätte ich keinen Overflow gehabt.
|
AW: EIntOverflow bei LongWord, nicht aber bei Word
dword + word -> dword
Eventuell ist es auch manchmal bissl intelligenter und als Ergebnis wird dann das Größere der Beiden genommen. Schlimm wird es, wenn man Int64 mit UInt64 verrechnen will, denn da gibt es aktuell nichts Größeres, in der CPU. (Fließkomme in FPU ausgenommen) Mit MMX oder Dergleichen gibt es auch jetzt schon nativ 128 Bit. [EDIT] Nee, MMX war 8*8, 4*16, 2*32 oder 1*64 Bit ... aber SIMD (SSE) kann 128 und teilweise sogar 256 Bit (AVX) |
AW: EIntOverflow bei LongWord, nicht aber bei Word
Zitat:
![]() |
AW: EIntOverflow bei LongWord, nicht aber bei Word
Ich glaube Günther geht es darum, dass seine
Delphi-Quellcode:
Expression nicht vor der Addition erweitert wurde (da ja schon erkennbar ist, dass der temporäre Wert direkt einem
Word + Word
Delphi-Quellcode:
zugewiesen werden soll). Unter C printed folgender Code:
Double
Code:
übrigens "-9000.000000".
Word a = 1000;
Word b = 10000; printf("%f", (double)(a - b)) |
AW: EIntOverflow bei LongWord, nicht aber bei Word
Zitat:
Delphi-Quellcode:
on keiner kommt.
{$OVERFLOWCHECKS ON}
Zitat:
|
AW: EIntOverflow bei LongWord, nicht aber bei Word
Zitat:
Zitat:
|
AW: EIntOverflow bei LongWord, nicht aber bei Word
Eine ganz peinliche Frage, ich mache ja noch nicht lange Delphi :oops:
Ich sehe in Delphi keine Äquivalent zu C's
Delphi-Quellcode:
außer vielleicht
(double)(a - b)
Delphi-Quellcode:
. Gibt es etwas besseres außer vielleicht einer zusätzlichen Variable der man dann
a*1.0 - b
Delphi-Quellcode:
zuweist?
a
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 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