Ursache für Rangecheck Error finden

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1851
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Ursache für Rangecheck Error finden

Beitrag von fliegermichl »

Ich habe eine Programmzeile:

Code: Alles auswählen

  fCurrentY:=((MeasureUnitsToPixelsV(MarginTop-PageBorderOffset)-fLineSpace) shr 1)-MeasureUnitsToPixelsV(MarginTop)
Da hält der Debugger das Programm an und sagt "Rangecheck Error". Kann man ihn irgendwie dazu überreden, etwas ausführlicher zu sein?

Benutzeravatar
Zvoni
Beiträge: 770
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: Ursache für Rangecheck Error finden

Beitrag von Zvoni »

Ohne Datentypen wirds schwer.....

Ein Rangecheck-Error ist im Regelfall der Hinweis, dass du versuchst 5 Liter Wasser in eine 2 Liter Flasche zu stopfen....
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1851
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Ursache für Rangecheck Error finden

Beitrag von fliegermichl »

Ja oder fCurrentY ist vom Typ cardinal und das Ergebnis ist kleiner 0.
Wäre halt schick, wenn das der Debugger gleich konkretisieren könnte.

Benutzeravatar
Zvoni
Beiträge: 770
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: Ursache für Rangecheck Error finden

Beitrag von Zvoni »

fliegermichl hat geschrieben: Fr 9. Okt 2026, 10:02 Ja oder fCurrentY ist vom Typ cardinal und das Ergebnis ist kleiner 0.
Wäre halt schick, wenn das der Debugger gleich konkretisieren könnte.
Nicht zu vergessen, das ein "shr 1" gleichbedeutend mit einer Division durch 2 ist.
Kann es sein, dass dein "(MeasureUnitsToPixelsV(MarginTop-PageBorderOffset)-fLineSpace)" etwas ungerades zurückgibt?
"shr 1" wirft einen vorhandenen Rest <>0 über Bord.
Und danach subtrahierst du ja noch was
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Antworten