AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Ungültige Gleitkommaoperation nur bei bestimmten PC's
Thema durchsuchen
Ansicht
Themen-Optionen

Ungültige Gleitkommaoperation nur bei bestimmten PC's

Ein Thema von HCB · begonnen am 19. Dez 2023 · letzter Beitrag vom 22. Dez 2023
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#1

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

  Alt 20. Dez 2023, 11:47
StrToInt(eingabetext) suggeriert zwar, dass hier die Eingabe zu 'nem Integer werden soll, aber ob die Eingabe ein Integer ist, wissen wir nicht.
Es ist egal, was übergeben wird, es kann auch garnichts, oder der Name "Hans Peter" sein.
Es wird als Ganzzahl interpreziert und demnach auch so behantelt.
Sollte es nicht passen, dann kommt ein anderer Fehler, aber eben nichts bezüglicgh Fließkomma.

Und ja, natürlich kann (oder wird vermutlich auch) der Fehler von wo Anders her kommen.
Das ändert nichts daran, dass wir nicht wissen (wussten), welche konkrete Eingabe zum konkreten Fehler führt(e).

Es ist klar, das dummy nach dem StrToInt 'nen Integer enthält oder eine Ausnahme ausgelöst wird. Enthält dummy einen Integer, wird eine Abfrage mit dem Inhalt von Eingabetext erstellt. Von welchem Type die Artikelnummer in der Datenbank ist, wissen wir nicht, durch die Nutzung von Like könnte hier aber (datenbankseitig) eine implizite Typumwandlung erfolgen, die aber höchstwahrscheinlich nicht zum genannten Fehler führen wird.

Zitat von HCB:
Im Suchfeld sollen Artikelnummern und Produktbezeichnungen eingegeben werden können, wobei wenn Artikelnummern eingegeben werden eine andere SQL abfrage gestartet wird.
Ich habe das ganze jetzt mal auf "tryStrToInt" umgestellt und statt der var cardinal Integer zugewiesen. Mal sehen obs dann richtig läuft.
Gebe auf jedenfall morgen bescheid. Drückt mir die Daumen.
Die gezeigte Quelltext lässt vermuten, dass es sich hier um eine andere SQL abfrage, der Abfrage nach Artikelnummer, also um die andere Abfrage, handelt.

Der Fehler tritt aber auf, wenn man unsinniges wie "hehfehehefgh" eingibt. Also bei der Abfrage, deren Verarbeitung wir im Quelltext nicht sehen können.

Wir wissen, dass mit einer Datenbank gearbeitet wird, wir wissen aber nicht welcher. Stimmen die Ländereinstellungen, ... der Datenbanken auch alle überein?

Der genannte Fehler könnte z. B. eventuell auch auftreten, wenn Client und Datenbank Komma und Tausenderpunkte unterschiedlich interpretieren. Dann könnte er beim Open der Abfrage auftreten, wenn der Client einen Integer erwartet, aber 'nen Gleitkommawert erhält oder andersherum oder irgendsowas, was leicht bis mittelstarkt durcheinandergeraten ist. Fehlerverursacher muss jedenfalls nicht zwingend die Artikelnummer sein, sondern könnte auch aus einem (wie auch immer gearteten) Konvertierfehler einer der anderen im select * from enthaltenen Spalten resultieren.
Zitat von Jasocul:
Bist du dir sicher, dass du den Fehler an der richtigen Stelle suchst?
Ich bin mir (fast) sicher, dass der Fehler an der falschen Stelle gesucht wird.
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
218 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 20. Dez 2023, 11:55
Das blöde daran ist, dass ich auf dem Entwicklungsrechner nichts feststellen kann, da das ja auf diesem funktioniert. Ich muss erst die exe auf die anderen Rechner übertragen um festzustellen, dass es dort bei einem läuft, bei anderen aber nicht.
Ich setze mal im Code einige ShowMessages ein um genau zu sehen bei welchen Codeabschnitt die Exception bei den betroffenen Rechnern auftritt.

LG Harry
  Mit Zitat antworten Zitat
rabatscher

Registriert seit: 13. Dez 2007
Ort: Bruck an der Mur
69 Beiträge
 
#3

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

  Alt 20. Dez 2023, 12:08
my 2 cents:
wir hatten grad ein Problem mit dem FPU Control Word :
Beim laden der fbClient.dll kam es zu einem netten Nebeneffekt, der das FPU control word so gesetzt hat,
dass die FPU Exceptions maskiert wurde - das lag jetzt mal nicht in erster Linie an Firebird (die hatten
genau diesen Fehler ausgemerzt) aber an 3rd Party dll's, die auf manchen Systemen dazugeladen wurde.
-> Bei uns hatte das genau eine FPU exception maskiert und auf anderen Rechnern Exceptions verursacht.

-> mal checken (da ich ja evt. nicht ganz falsch liege, dass du Datenbanken benutzt).

Manche FPU exceptions werden nur bei einem "Wait" asm call geworfen also hast du evt. ein
paar Assemblersequenzen, die das nicht aufrufen?

Und dann wär noch die Routine Move... sie benutzt in win32 die FPU Register um Daten zu kopieren. Wenn jetzt vorher schon
mal eine FP Exception da war könnte das da hochkommen. Und... Move wird intern wirklich oft verwendent.
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
492 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 20. Dez 2023, 13:02
Wenn du da nicht weiter kommst könnte MadExcept oder ähnliche Tools eine große Hilfe sein.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 20. Dez 2023, 13:23
Und der Remotedebugger hilft auch immer wieder.
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.643 Beiträge
 
#6

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

  Alt 20. Dez 2023, 13:38
Ich setze mal im Code einige ShowMessages ein um genau zu sehen bei welchen Codeabschnitt die Exception bei den betroffenen Rechnern auftritt.
🙈 Hast Du kein richtiges Logging?
Billigste Variante:
Bei Unhandled Exceptions schön den Stacktrace rausloggen.

Ansonsten im Trace-Mode einfach bei jeder Method den Ein- und den Ausgang loggen.
Dann siehst Du sinnvoll auch im Log wo der Fehler geworfen wird und welche Methoden da drüber aufgerufen wurden.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 20. Dez 2023, 14:11
🙈 Hast Du kein richtiges Logging?
siehe GetIt : CodeSite, QuickLogger, ...


oder miniamal
* TFile.AppendAllText('C:\irgendwo\Datei.log', 'peng'#10);
* OutputDebugString(PChar('peng')); ins Logfenster des Delphi
*
Delphi-Quellcode:
var LogFile := TFile.AppendText('C:\irgendwo\Datei.log');

LogFile.WriteLine('peng');
LogFile.WriteLine('peng');

//LogFile := nil; {kann, aber muß nicht, weil wird eh automatisch}
JAAAAA, oder die uralte TEXT-FileAPI (AssignFile), TStringStream, usw.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Dez 2023 um 14:17 Uhr)
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
218 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 20. Dez 2023, 16:02
Vielen herzlichen Dank für euere Mithilfe. Ich habe bemerkt dass ich zur Geschindigkeitsmessung am Ende der Routine
> lbl_performance.Caption:= IntToStr(GetTickCount - startTime) + 'ms'; <
eingefügt habe. Die Variable starttime habe ich als Integer deklariert, sehe aber in der Delphi Hilfe dass es wohl von Typ cardinal sein soll.
Vielleicht liegt es daran. Was aber immer noch nicht klärt, warum es auf manche Rechnern funktioniert.

FPU??
Alle Rechner haben den gleichen Prozessor i5 4690 außer der Entwicklungsrechner hat i5 7xxx.

Ich werde morgen das ohne GetTickCount probieren und wieder berichten.

LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 20. Dez 2023, 17:27
Ja, Cardinal, schon immer,
aber nach 49,7 Tagen kann es dennoch knallen, wenn es zum Überlauf kommt, da Delphi ja neuerdings standardmäßig die Bereichsprüfung aktiv hat.

Delphi-Referenz durchsuchenTStopWatch Hier im Forum suchenTStopWatch
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Dez 2023 um 17:29 Uhr)
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
218 Beiträge
 
Delphi 12 Athens
 
#10

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

  Alt 21. Dez 2023, 07:44
Guten Morgen,
die Messung GetTickCount hab ich jetzt komplett rausgeschmissen und siehe da: ES FUNKTIONIERT IMMER NOCH NICHT!
Weiß der Teufel was da schief läuft.
Es ist verflucht schwierig einen Fehler auf dem Rechner zu finden, auf dem das Programm ja läuft. Verflixt!
  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 18: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