![]() |
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? |
Re: Gleitkommafehler unter Linux
Kannst du dafür ein kurzes Beispiel angeben?
|
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 |
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) |
Re: Gleitkommafehler unter Linux
Zitat:
|
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