Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   ShortInt-Zuweisung schlägt fehl? (https://www.delphipraxis.net/196085-shortint-zuweisung-schlaegt-fehl.html)

günni0 22. Apr 2018 13:58

ShortInt-Zuweisung schlägt fehl?
 
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.

Zacherl 22. Apr 2018 14:04

AW: ShortInt-Zuweisung schlägt fehl?
 
Du meinst sicher bei 145? Das ist nicht weiter verwunderlich, da der Wertebereich von
Delphi-Quellcode:
ShortInt
von -128..127 geht. Da kommt es zu einem klassischen Overflow. Wenn du keine negativen Werte brauchst, kannst du einfach
Delphi-Quellcode:
Byte
bzw
Delphi-Quellcode:
UInt8
verwenden.

günni0 22. Apr 2018 14:05

AW: ShortInt-Zuweisung schlägt fehl?
 
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!

Zacherl 22. Apr 2018 14:08

AW: ShortInt-Zuweisung schlägt fehl?
 
Zitat:

Zitat von günni0 (Beitrag 1400143)
Ich hab eben schnell bei Gogle gesucht, habe irgendwas mit 32767 gesehen und dachte daran liegts nicht.

Das ist
Delphi-Quellcode:
SmallInt
(ja, ich bin auch kein Fan der Delphi Bezeichner für Integer-Typen). Ich verwende meistens die (neuen) Aliase wie
Delphi-Quellcode:
Int16
,
Delphi-Quellcode:
UInt32
, etc., da man hier auf den ersten Blick sieht, wie viele Bits beinhaltet sind und ob signed/unsigned.

himitsu 22. Apr 2018 14:09

AW: ShortInt-Zuweisung schlägt fehl?
 
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 :zwinker:

günni0 22. Apr 2018 14:10

AW: ShortInt-Zuweisung schlägt fehl?
 
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 :P
Bei einer eigenen IfThen-Funktion greift die Bereichsprüfung nicht.

Zacherl 22. Apr 2018 14:12

AW: ShortInt-Zuweisung schlägt fehl?
 
Zitat:

Zitat von günni0 (Beitrag 1400147)
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 :P
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.

günni0 22. Apr 2018 14:23

AW: ShortInt-Zuweisung schlägt fehl?
 
Ist ja auch egal. Das Problem wurde gelöst und mehr interessiert auch nicht.

mkinzler 22. Apr 2018 14:26

AW: ShortInt-Zuweisung schlägt fehl?
 
Zuviel Wissen verwirrt auch nur ...

günni0 22. Apr 2018 14:27

AW: ShortInt-Zuweisung schlägt fehl?
 
Recht unfreundlich muss ich sagen, wenn ein Moderator sich rausnehmen darf so etwas beizutragen.

Daniel 22. Apr 2018 14:34

AW: ShortInt-Zuweisung schlägt fehl?
 
Nö.
Wir alle leisten uns ab und an Schnitzer wie diesen, dass eine Variable mit dem falschen Wertebereich deklariert ist. Kein Problem. Dennoch stelle ich mit einer gewissen Verwunderung fest, dass es heutzutage leichter ist, hier im Forum einen Thread aufzumachen als sich mit den elementaren Debugging-Werkzeugen auseinanderzusetzen. Und wenn noch kein Interesse vorhanden ist, den Fehler zu ergründen, ist so ein Kommentar völlig gerechtfertigt.

günni0 22. Apr 2018 14:36

AW: ShortInt-Zuweisung schlägt fehl?
 
Schade eine solche Antwort zu lesen.
Jetzt ist mir aber klar, warum erstens immer weniger Nutzer online sind und zweitens immer und immer mehr neue Konten hier ankommen.
Over and out

himitsu 22. Apr 2018 15:51

AW: ShortInt-Zuweisung schlägt fehl?
 
Zitat:

Bei einer eigenen IfThen-Funktion greift die Bereichsprüfung nicht.
Doch, denn links vom IfThen wird die Zuweisung an diese Variable geprüft und da dort 147 nicht rein passt, knallt es auch,
außer du hast diese Prüfung durch einen expliziten Cast umgangen.

p80286 22. Apr 2018 20:36

AW: ShortInt-Zuweisung schlägt fehl?
 
@Daniel
Manchmal ist die Welt nicht mit Brettern sondern mit Balken zugenagelt. Da kommt man manchmal nicht auf das Naheliegende.

Zitat:

Zitat von günni0 (Beitrag 1400153)
Schade eine solche Antwort zu lesen.
Jetzt ist mir aber klar, warum erstens immer weniger Nutzer online sind und zweitens immer und immer mehr neue Konten hier ankommen.
Over and out

Könntest Du das näher erläutern?

Gruß
K-H

Jasocul 23. Apr 2018 07:21

AW: ShortInt-Zuweisung schlägt fehl?
 
Off-Topic. Aber die ursprüngliche Frage ist ja inzwischen beantwortet.

@mkinzler und @Daniel:
Die Formulierung war unfreundlich und eines Moderators nicht würdig. Da erwarte ich mehr Sachlichkeit.

@günnie0:
Auch wenn es nicht nach deinem Geschmack formuliert war, so stimmt es dennoch inhaltlich.

Sich mit dem Debugger ansehen, was bei der Zuweisung mit dem Inhalt der Variablen passiert und dann vielleicht noch nachsehen, wie der Wertebereich eines ShortInt ist, kann von einem Entwickler nicht zu viel verlangt sein. Egal, ob Amateur oder Profi.
Ein "Ist mir doch egal, Hauptsache es funktioniert" kann auch schnell dazu führen, dass sich im Forum die Unterstützung reduziert. Warum soll man helfen, wenn man das Gefühl bekommt, dass weitergehende Erläuterungen zur Vermeidung zukünftiger, ähnlicher Probleme nicht gewünscht wird?

mkinzler 23. Apr 2018 07:30

AW: ShortInt-Zuweisung schlägt fehl?
 
Vielleicht sollte ich das Team verlassen, wenn ich unwürdig für diesen Job bin!

Jasocul 23. Apr 2018 07:45

AW: ShortInt-Zuweisung schlägt fehl?
 
Zitat:

Zitat von mkinzler (Beitrag 1400196)
Vielleicht sollte ich das Team verlassen, wenn ich unwürdig für diesen Job bin!

Unsinn. Hast eine PN.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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