Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Rundungs-Probleme bei Ausgabe als String (https://www.delphipraxis.net/195265-rundungs-probleme-bei-ausgabe-als-string.html)

Fritzew 16. Feb 2018 08:27

AW: Rundungs-Probleme bei Ausgabe als String
 
Also wenn es sogar im Header der Dll so vermerkt ist, solltest Du meiner Meinung nach bei Aufrufen in die Dll so verfahren:

// Nur so hingetipt Pseudo Code

Delphi-Quellcode:
Procedure callToDll ;
begin
  Set8087CW(DllCW); // DllCw = CtrlWord das die Dll erwartet
  CallToDll;
  Set8087CW(MYCW); // Das was Du erwartest
end;
Einfach um sicher zu gehen das die Dll auch sauber arbeitet und davon ausgeht das immer "Ihr" Wert gesetzt ist

raller09 16. Feb 2018 08:34

AW: Rundungs-Probleme bei Ausgabe als String
 
Zitat:

Zitat von Fritzew (Beitrag 1393993)
Also wenn es sogar im Header der Dll so vermerkt ist, solltest Du meiner Meinung nach bei Aufrufen in die Dll so verfahren:

// Nur so hingetipt Pseudo Code

Delphi-Quellcode:
Procedure callToDll ;
begin
  Set8087CW(DllCW); // DllCw = CtrlWord das die Dll erwartet
  CallToDll;
  Set8087CW(MYCW); // Das was Du erwartest
end;
Einfach um sicher zu gehen das die Dll auch sauber arbeitet und davon ausgeht das immer "Ihr" Wert gesetzt ist

genau das mache ich jetzt ja auch. Ich benutze nur nicht den "dokumentierten" Wert. Sondern den, der sich bei meinen Versuchen als "gleich" gezeigt hat. Dokumentation ist schon etwas älter, da ist mittlerweile auch der Compiler der .dll gewechselt worden...

Danke,

Luckie 16. Feb 2018 12:47

AW: Rundungs-Probleme bei Ausgabe als String
 
Ach das steht so in der Doku der DLL? Was macht die um Gottes Willen für komische Sachen. :roll:

freimatz 16. Feb 2018 14:40

AW: Rundungs-Probleme bei Ausgabe als String
 
wäre da nicht auch noch ein try finally sinnvoll:?:

Fritzew 16. Feb 2018 16:24

AW: Rundungs-Probleme bei Ausgabe als String
 
Zitat:

Zitat von freimatz (Beitrag 1394026)
wäre da nicht auch noch ein try finally sinnvoll:?:

Nee.....
Wenn eine Exception in der Dll auftritt hast Du ganz andere Probleme :-)
da kannst Du Dir das finally echt sparen. Exceptions aus anderen Compilern und oder Sprachen sind eh nicht kompatibel zu Delphi.

Zitat:

Zitat von Luckie (Beitrag 1394019)
Ach das steht so in der Doku der DLL? Was macht die um Gottes Willen für komische Sachen. :roll:

Für das ist das FPU Controlword ja da. Bei gemixten Application/Dll muss man dann schon dafür sorgen das alle glücklich sind.
Da es in dieser speziellen Dll ja sogar dokumentiert ist, einfach daran halten.

Zacherl 16. Feb 2018 16:52

AW: Rundungs-Probleme bei Ausgabe als String
 
Zitat:

Zitat von Fritzew (Beitrag 1394036)
Zitat:

Zitat von freimatz (Beitrag 1394026)
wäre da nicht auch noch ein try finally sinnvoll:?:

Nee.....
Wenn eine Exception in der Dll auftritt hast Du ganz andere Probleme :-)
da kannst Du Dir das finally echt sparen. Exceptions aus anderen Compilern und oder Sprachen sind eh nicht kompatibel zu Delphi.

Delphi benutzt SEH zum Fangen von Exceptions. Das heißt, dass sämtliche CPU Exceptions grundsätzlich gefangen werden können; auch dann, wenn sie in einer fremden DLL auftreten. Ob man den State daraus dann noch sinnvoll recovern kann, ist allerdings fragwürdig. Höher-Sprachige Exceptions sind in vielen Fällen auch damit behandelbar. C++ Exceptions z.b. erzeugen am Ende tatsächlich auch eine spezielle CPU Exception. Delphi wird zwar den Typ nicht mehr differenzieren können, aber die Exception ansich bekommst du mit.

Fritzew 16. Feb 2018 16:55

AW: Rundungs-Probleme bei Ausgabe als String
 
Zitat:

Zitat von Zacherl (Beitrag 1394038)
Delphi benutzt SEH zum Fangen von Exceptions. Das heißt, dass sämtliche CPU Exceptions grundsätzlich gefangen werden können; auch dann, wenn sie in einer fremden DLL auftreten. Ob man den State daraus dann noch sinnvoll recovern kann, ist allerdings fragwürdig. Höher-Sprachige Exceptions sind in vielen Fällen auch damit behandelbar. C++ Exceptions z.b. erzeugen am Ende tatsächlich auch eine spezielle CPU Exception. Delphi wird zwar den Typ nicht mehr differenzieren können, aber die Exception ansich bekommst du mit.

Das ist aber im Regelfall das letzte was Du mitbekommst, stabil ist was anderes.

Zacherl 16. Feb 2018 18:28

AW: Rundungs-Probleme bei Ausgabe als String
 
Zitat:

Zitat von Fritzew (Beitrag 1394039)
Zitat:

Zitat von Zacherl (Beitrag 1394038)
Delphi benutzt SEH zum Fangen von Exceptions. Das heißt, dass sämtliche CPU Exceptions grundsätzlich gefangen werden können; auch dann, wenn sie in einer fremden DLL auftreten. Ob man den State daraus dann noch sinnvoll recovern kann, ist allerdings fragwürdig. Höher-Sprachige Exceptions sind in vielen Fällen auch damit behandelbar. C++ Exceptions z.b. erzeugen am Ende tatsächlich auch eine spezielle CPU Exception. Delphi wird zwar den Typ nicht mehr differenzieren können, aber die Exception ansich bekommst du mit.

Das ist aber im Regelfall das letzte was Du mitbekommst, stabil ist was anderes.

Ja, das stimmt schon. Wenn die Exception in der Dll nicht selbstständig behandelt wird, kann man das Programm im Grunde auch direkt crashen lassen, da man sehr wahrscheinlich keinen validen Zustand mehr herstellen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 2 von 2     12   

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