AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Integerüberlauf bei LongWord

Ein Thema von ing · begonnen am 8. Jun 2016 · letzter Beitrag vom 8. Jun 2016
Antwort Antwort
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.403 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Integerüberlauf bei LongWord

  Alt 8. Jun 2016, 07:51
Ein Cast mit i := - Integer( w ); sollte funktionieren.
wenn man funktionieren mit "da kommt jetzt keine Exception mehr" übersetzt dann ja:

Delphi-Quellcode:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var w:LongWord;
    i:Integer;
begin
  w:= High(LongWord);
  i:=-Integer(w);
  ShowMessage(IntToStr(w)+' / '+IntToStr(i));
end;
Das dürfte aber nur in bestimmten Fällen kein Problem sein
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Integerüberlauf bei LongWord

  Alt 8. Jun 2016, 08:01
Hallo,
ich denke, der Hinweis mit der Überlaufprüfung hilft hier.
Wenn im alten Programm keine Fehlermeldung kam,
war dort vielleicht die Prüfung ausgeschaltet?


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.749 Beiträge
 
Delphi 12 Athens
 
#3

AW: Integerüberlauf bei LongWord

  Alt 8. Jun 2016, 15:05
Delphi rechnet immer erst mit dem QuellTyp weiter, bzw. mit dem kleinsten "gemeinsamen" Typ, der bei der jeweiligen Teiloperation nötig ist.

LongWord > Negation Unäre Operation > LongWord (und das kann nicht negativ sein) > Zuweisung > Integer/LongInt (da Zieltyp = Integer)

Delphi-Quellcode:
i := -Integer(W); // geht nur, wenn W < 2 Milliarden (maximal 31 Bit genutzt)

i := -Int64(W); // falls an "richtig" rechnen muß

// oder du schaltest die Bereichsprüfung ab, bzw. bzw gezielt dort an, wo sie auch nötig ist
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 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