Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Gleitkommafehler unter Linux (https://www.delphipraxis.net/98756-gleitkommafehler-unter-linux.html)

3_of_8 31. Aug 2007 19:43


Gleitkommafehler unter Linux
 
Morgen.

Ich kompiliere gerade Delphi-Code unter Linux, und zwar mit Free Pascal. Dabei ist mir folgendes Problem aufgefallen:

Unter Windows läuft alles wie geschmiert, aber unter Linux scheint seltsamerweise jeder Zugriff auf einen Gleitkommawert zu einer "Invalid floating point operation" zu führen. Auch wenn ich den Wert nur mit WriteLn() ausgeben oder mit trunc() kürzen will. Eigentlich müsste diese Wert (und er ist es unter Windows auch) eine schöne, runde Gleitkommazahl sein (um genau zu sein: 1), also nichts in der Art wie NaN oder Infinity.

Dummerweise habe ich auch keinen Debugger unter Linux, mit dem ich da genauer reinschauen könnte.

Übrigens tritt der Fehler sowohl beim Object-Pascal-Modus (-S2) als auch beim Delphi-Modus (-Mdelphi) auf.

Hat irgendjemand eine Idee, was da los sein könnte?

Dax 31. Aug 2007 19:58

Re: Gleitkommafehler unter Linux
 
Kannst du dafür ein kurzes Beispiel angeben?

Horst_ 31. Aug 2007 20:00

Re: Gleitkommafehler unter Linux
 
Hallo,

ein wenig Code-geschnippsel würde hilfreich sein.
Kann es sein das Freepascal, die Variablen vorher nicht vorbelegt hat?? (Der Glaskugeltrick)

Gruß Horst

3_of_8 31. Aug 2007 20:02

Re: Gleitkommafehler unter Linux
 
Hab den Fehler gefunden.

Offenbar ist Freepascal etwas restriktiver was Float-Zuweisungen aller Art betrifft. Der Float-Wert war undefiniert (war er unter Windows auch) und hat offenbar deshalb unter Free Pascal eine Exception geworfen, während Delphi ihn einfach ignoriert hat.

Trotzdem mal danke an alle.

(Nebenbei, kurzes Codebeispiel wird schwer bei 1300 Zeilen)

jbg 31. Aug 2007 21:32

Re: Gleitkommafehler unter Linux
 
Zitat:

Zitat von 3_of_8
während Delphi ihn einfach ignoriert hat.

Du hast aber nicht eine DLL mittels LoadLibrary statt SafeLoadLibrary geladen? Microsoft-DLLs sind bekannt dafür, dass sie den CoProzessor umstellen.

3_of_8 31. Aug 2007 22:24

Re: Gleitkommafehler unter Linux
 
Nein. Ich habe überhaupt nichts in der Art gemacht. Ich habe nur mit Turbo Delphi Code kompiliert, der die SysUtils und Math eingebunden hat und im großen und ganzen eine Menge mit Klassen und Records rumfrickelt. Keine DLL-Einbindungen oder ähnliches.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 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