Infalid Operation bei Prüfung von Double?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Infalid Operation bei Prüfung von Double?

Beitrag von MmVisual »

Hallo,

In der Zeos V8 Komponente wird für PostgreSQL der Float Wert auf Infinity/NegInfinity und NaN überprüft. Der Float-Wert ist eine gültige Float Zahl.
Bei der Ausführung erscheint jedoch dieser Fehler:
Bild1.png
Bild1.png (55.9 KiB) 1115 mal betrachtet
Ich verstehe nicht so recht was an der Codezeile schlecht sein soll, warum der Fehler kommt.

Vielen Dank für die Hilfe.

VG Markus

Edit:
Ich habe diese Zeile einmal mit den Math Funktionen so abgeändert:

L := Ord(IsNan(dbl) Or IsInfinite(dbl));

Damit kommt dieser Fehler nicht.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Mathias
Beiträge: 6899
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Infalid Operation bei Prüfung von Double?

Beitrag von Mathias »

Evtl. das gleiche Problem.

viewtopic.php?t=16676
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Infalid Operation bei Prüfung von Double?

Beitrag von MmVisual »

Nein, das ist nicht exakt das gleiche. Ich bin mit Windows, nicht mit Linux und eine importierte CLib habe ich auch nicht.

In der Math sind die "Infinity/NegInfinity/NaN" deklariert und diese deklarationen kann man in anderen Teilen nicht benutzen. Also ein Pascal (FPC) internes Problem?

Die Zeos Entwickler arbeiten in der Regel mit Delphi, daher vermute ich dass diese Codezeilen schon mal funktioniert haben, nur eben nicht mit dem FPC.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Mathias
Beiträge: 6899
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Infalid Operation bei Prüfung von Double?

Beitrag von Mathias »

Nein, das ist nicht exakt das gleiche. Ich bin mit Windows, nicht mit Linux und eine importierte CLib habe ich auch nicht.
Ich habe unterdessen festgestellt, das es unter Windows auch ist,, es tritt unter Linux einfach häufiger auf.

Ich habe gerade gestern gemerkt, das das Problem auch mit SDL3 auftritt. So sieht es für alles OS aus:

Code: Alles auswählen

{$IF defined(CPUX86) or defined(CPUX64)}
procedure SetMXCSR;
var
  w2: word = 8064;
begin
  asm
           Ldmxcsr w2
  end;
end;
{$ENDIF}

begin
{$IF defined(CPUX86) or defined(CPUX64)}
  SetMXCSR;
{$ENDIF}end.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten