Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Ungültige Gleitkommaoperation nur bei bestimmten PC's (https://www.delphipraxis.net/214290-ungueltige-gleitkommaoperation-nur-bei-bestimmten-pcs.html)

HCB 19. Dez 2023 10:14

Delphi-Version: 11 Alexandria

Ungültige Gleitkommaoperation nur bei bestimmten PC's
 
Hallo, 5 User nutzen mein Programm.
Bei einer Suchfunktion mit z.B. Werten die nicht gefunden werden können, da nicht vorhanden, kommt bei 2 PC's die korrekte Messagebox dass der Suchbegriff nicht gefunden wurde.
Die anderen 3 PC's zeigen statt die MessageBox die Fehlermeldung "Ungültige Gleitkommaoperation", die MessageBox wird aber nicht gezeigt.
Ich muss dazu sagen, das mit dummy:= StrToInt(eingabetext) geprüft wird, ob Nummern eingegeben werden, dementsprechend wird die except Routine ausgeführt.

Kennt Ihr so ein Verhalten, dass mit den selben Programm das Ergebnis auf verschiedenen Rechnern anders aussieht?

Über Tipps würde ich mich freuen.

LG Harry

jaenicke 19. Dez 2023 10:55

AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
 
Ein Thema könnte das FPU control word sein, mit dem Einfluss auf Gleitkommaberechnungen genommen werden kann.
https://docwiki.embarcadero.com/RADS...ntrol_Routines

Die Frage ist aber eher, wo das konkrete Problem liegt. Deine Prüfung mit StrToInt kann da kaum eine Rolle spielen, denn es geht ja um eine Gleitkommaoperation. Welche Zeile wirft denn den Fehler?

Ein beliebter Fehler ist z.B., einen Wert auf "= 0" zu prüfen, statt IsZero zu verwenden.

HCB 19. Dez 2023 11:02

AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
 
Ich habe schon gedacht dass es am jeweiligen Bertriebssystemstand liegt. Fällt aber auch aus, da der eine PC- Stand 22H2 19045.3693 hat und es ohne Fehlermeldung läuft, während der andere PC mit dem selben Betriebssystemstand die Fehlermeldung bringt.
Ich vermute, dass irgend etwas an der Rechnerkonfiguration sich unterscheidet. Nur was????

LG Harry

haentschman 19. Dez 2023 11:54

AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
 
Zitat:

Welche Zeile wirft denn den Fehler?
:wink: Code?

LoZe 19. Dez 2023 11:58

AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
 
ich hatte mal ein ähnliches Problem bei mir waren die jeweiligen Rechner im Windows nicht auf Region Deutschland eingestellt Sondern Englisch, Chinesisch oder Slowakisch.

Sinspin 19. Dez 2023 12:11

AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
 
Zitat:

Zitat von LoZe (Beitrag 1530969)
ich hatte mal ein ähnliches Problem bei mir waren die jeweiligen Rechner im Windows nicht auf Region Deutschland eingestellt Sondern Englisch, Chinesisch oder Slowakisch.

Dem gebe ich auch 100 Punkte.
Länder Einstellungen, Format Einstellungen. Habe ich regelmäßig Probleme mit.

Ich würde generell mit StrToIntDef arbeiten da hier keine Exceptions kommen, sondern der angegebene Defaultwert wenn etwas schief geht.

DeddyH 19. Dez 2023 12:18

AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
 
StrToInt hat aber doch mit Gleitkomma nichts zu tun, ansonsten würde ich eher mit einem EConvertError rechnen, wenn man Stringumwandlungen versucht.

HCB 19. Dez 2023 13:03

AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
 
Die Variable dummy ist vom Typ cardinal, ich werde es mal auf Integer oder LongInt umstellen und sehen was dann passiert.
Fragt sich nur warum es bei 2 Rechnern ohne Fehlermeldung läuft.???

himitsu 19. Dez 2023 13:34

AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
 
Ihhh, eine Exception zur Flusssteuerung.

OK, wenn sowieso abgebrochen werden soll und der der Benutzer die Meldung sehen soll, dann ja,

aber sonst TryStrToInt oder StrToIntDef, jenachdem wie die Fehleingabe behandelt werden soll.


Aber ein Fließkommafehler bei einer Ganzzahloperation? :gruebel:

Delphi.Narium 19. Dez 2023 13:56

AW: Ungültige Gleitkommaoperation nur bei bestimmten PC's
 
Wenn statt einer MessageBox, außerhalb der Fehlerbehandlungsroutine zur Flusssteuerung, eine andere Fehlermeldung kommt, liegt die Vermutung nahe, dass die andere Fehlermeldung nicht von dort kommt, wo du es vermutest oder gerne hättest, sondern von einer anderen Stelle.
Oder die Fehlerbehandlung selbst enthält einen Fehler, so dass dort nicht die gewünschte Fehlerbehandlung erfolgt, sondern ein Folgefehler sichtbar wird.

haentschman bat um Code. Wie wäre es damit? Dann hätten wir sogar 'ne Chance die Fehlerstelle mal anzuschauen, den Fehler nachzuvollziehen, für Abhilfe zu sorgen, statt einfach nur in Mutmaßungen zu stochern.

Zitat:

Zitat von himitsu
Aber ein Fließkommafehler bei einer Ganzzahloperation?

Wie kommst Du dadrauf? ;-) ;-) ;-)

StrToInt(eingabetext) suggeriert zwar, dass hier die Eingabe zu 'nem Integer werden soll, aber ob die Eingabe ein Integer ist, wissen wir nicht.

Ist Eingabetext auf manchen Systemen ein Integer mit Tausenderpunkt, der auf anderen Systemen zu 'nem Dezimaltrenner mutiert? Oder ist die Eingabe zwar für StrToInt ein "richtiger" Integer, für die weitere Routine aber nicht?

Und was kommt hier auf welchem Weg nach Eingabetext? TEdit, TMemo, TMaskEdit, InputQuery, InputBox, ...

Und wo sucht die Suchfunktion? In 'ner Ini, im Arbeitsspeicher, 'ner StringList, 'ner Datenbank? Passen da die Ländereinstellungen überall zusammen?

Delphi mit Tausenderpunkt, Datenbank mit Tausenderkomma? Integer mit Tausenderpunkt ist Integer. Mit Tausenderkomma aber eventuell bei der DB dann nicht mehr. Oder was weiß wer da sonst noch so alles schiefgehen könnte, ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 Uhr.
Seite 1 von 6  1 23     Letzte »    

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