Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#26

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

  Alt 20. Dez 2023, 12: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