LL15: VCL-Komponente verändert FPU-Maske

Hallo

Mir ist aufgefallen, dass die VCL-List-&-Label-Komponente im Konstruktor umd beim Aufruf von LlSetOption() die FPU-Maske verändert:

Standard in Delphi 2007: [exDenormalized,exUnderflow…exPrecision]
Nach genannten Aufrufen: [exInvalidOp…exPrecision]

Meine Fragen dazu:

  • Ist das nur in der Version 15 der Fall?

  • Ist es nur beim Konstruktor und LlSetOption() der Fall?

  • Darf ich die Maske im Anschluss an die Konfiguration via LlSetOption() wieder zurücksetzen, bzw. funktioniert List & Label mit [exDenormalized,exUnderflow…exPrecision] einwandfrei?

Vielen Dank

Reto

Hallo Reto,

vielen Dank für Ihren Beitrag.

Dieses Verhalten ist mit der aktuellen Version 18 behoben. Für LL15 könnten Sie auf eigenen Gefahr hin die Flags setzen, solange sich die Precision nicht ändert. List & Label bzw. die MS-CRT erwartet jedoch ausgeschaltete FPU-Interrupts, so dass bei Eintreten eines Zustands (UNDER/OVERFLOW, ZERODIVIDE, INEXACT) Speicherverluste entstehen können oder eine unerwartete Funktion die Folge sein kann.

Es könnten aber auch vor jedem LL-Aufruf die Werte wieder die von der CRT gewünschten Form gebracht werden und anschließend wieder auf die von Delphi.

Mit freundlichen Grüßen

Christian Rauchfuß
Technischer Support
combit GmbH