AGB  ·  Datenschutz  ·  Impressum  







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

ShortInt-Zuweisung schlägt fehl?

Ein Thema von günni0 · begonnen am 22. Apr 2018 · letzter Beitrag vom 23. Apr 2018
Antwort Antwort
Seite 1 von 2  1 2      
günni0
(Gast)

n/a Beiträge
 
#1

ShortInt-Zuweisung schlägt fehl?

  Alt 22. Apr 2018, 14:58
In meinem Programm gibt es eine ShortInt-Variable der ich entweder den Wert 145 oder 117.
Wenn ich 117 setze, hat die Variable komischerweise den Inhalt -111.

Nichts wird in einem exotischen Thread gesetzt oder sowas. Alles nur in einem Button im MainThread.

Was kann das sein?
Wenn ich die Variable auf Integer abändere ist das Problem weg.

Geändert von günni0 (22. Apr 2018 um 15:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: ShortInt-Zuweisung schlägt fehl?

  Alt 22. Apr 2018, 15:04
Du meinst sicher bei 145? Das ist nicht weiter verwunderlich, da der Wertebereich von ShortInt von -128..127 geht. Da kommt es zu einem klassischen Overflow. Wenn du keine negativen Werte brauchst, kannst du einfach Byte bzw UInt8 verwenden.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#3

AW: ShortInt-Zuweisung schlägt fehl?

  Alt 22. Apr 2018, 15:05
Oh man tut mir leid!
Ich hab eben schnell bei Gogle gesucht, habe irgendwas mit 32767 gesehen und dachte daran liegts nicht.

Ok Dummheit wird bestraft. Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: ShortInt-Zuweisung schlägt fehl?

  Alt 22. Apr 2018, 15:08
Ich hab eben schnell bei Gogle gesucht, habe irgendwas mit 32767 gesehen und dachte daran liegts nicht.
Das ist SmallInt (ja, ich bin auch kein Fan der Delphi Bezeichner für Integer-Typen). Ich verwende meistens die (neuen) Aliase wie Int16 , UInt32 , etc., da man hier auf den ersten Blick sieht, wie viele Bits beinhaltet sind und ob signed/unsigned.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ShortInt-Zuweisung schlägt fehl?

  Alt 22. Apr 2018, 15:09
Zitat:
Was kann das sein?
Der Fehler sitzt vor dem Monitor.

* Erstmal tritt das Problem nicht bei 117 sondern bei 145 auf
* dann nutzt du nicht den Debugger, denn sonst würdest du sehen, dass es dort nach der Zuweisung so ist
* dann hast du nicht die Bereichsprüfung aktiviert, als dir das Problem auffiel, denn sonst wüstet du auch warum
* und du hast nicht die OH gelesen, denn sonst wäre dir aufgefallen, dass 145 da irgendwie nicht rein passen kann
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (22. Apr 2018 um 15:09 Uhr) Grund: ohhh, wo kommen denn die Antworten her und warum schläft die RedBox?
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#6

AW: ShortInt-Zuweisung schlägt fehl?

  Alt 22. Apr 2018, 15:10
Zitat:
* dann hast du nicht die Bereichsprüfung aktiviert, als dir das Problem auffiel, denn sonst wüstet du auch warum
Doch, habe ich. Aber ich nutze eine eigene IfThen-Funktion, um massig Zeilen und if-else-Konstrukte zu sparen
Bei einer eigenen IfThen-Funktion greift die Bereichsprüfung nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

AW: ShortInt-Zuweisung schlägt fehl?

  Alt 22. Apr 2018, 15:12
Zitat:
* dann hast du nicht die Bereichsprüfung aktiviert, als dir das Problem auffiel, denn sonst wüstet du auch warum
Doch, habe ich. Aber ich nutze eine eigene IfThen-Funktion, um massig Zeilen und if-else-Konstrukte zu sparen
Bei einer eigenen IfThen-Funktion greift die Bereichsprüfung nicht.
Die Bereichsprüfung ist eigentlich ein Runtime-Check, welcher vom Compiler automatisch (transparent im Hintergrund) generiert wird und sollte komplett unabhängig vom Code sein. Höchstens durch harte Casts kannst du das umgehen. Ich glaube ihr sprecht von zwei verschiedenen Dingen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#8

AW: ShortInt-Zuweisung schlägt fehl?

  Alt 22. Apr 2018, 15:23
Ist ja auch egal. Das Problem wurde gelöst und mehr interessiert auch nicht.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: ShortInt-Zuweisung schlägt fehl?

  Alt 22. Apr 2018, 15:26
Zuviel Wissen verwirrt auch nur ...
Markus Kinzler
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#10

AW: ShortInt-Zuweisung schlägt fehl?

  Alt 22. Apr 2018, 15:27
Recht unfreundlich muss ich sagen, wenn ein Moderator sich rausnehmen darf so etwas beizutragen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:27 Uhr.
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