AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Gleitkommafehler unter Linux

Ein Thema von 3_of_8 · begonnen am 31. Aug 2007 · letzter Beitrag vom 31. Aug 2007
Antwort Antwort
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#1

Gleitkommafehler unter Linux

  Alt 31. Aug 2007, 20:43
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?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Gleitkommafehler unter Linux

  Alt 31. Aug 2007, 20:58
Kannst du dafür ein kurzes Beispiel angeben?
  Mit Zitat antworten Zitat
Horst_

Registriert seit: 22. Jul 2004
Ort: Münster Osnabrück
116 Beiträge
 
#3

Re: Gleitkommafehler unter Linux

  Alt 31. Aug 2007, 21:00
Hallo,

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

Gruß Horst
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Gleitkommafehler unter Linux

  Alt 31. Aug 2007, 21:02
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)
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: Gleitkommafehler unter Linux

  Alt 31. Aug 2007, 22:32
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.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Gleitkommafehler unter Linux

  Alt 31. Aug 2007, 23:24
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  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:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz