2devs.com : réalisation et développement multimédias
2devs.com : réalisation et développement multimédias2devs.com : réalisation et développement multimédias
22 novembre 2008
2devs.com  > Open source  > .NET

Erreur .net FrameWork
2devs.com - imprimer cet article  Erreur de compilation visual studio 2003 : System.ArithmeticException
Erreur de compilation .net
Publié le 03/10/2004, par Jean-Baptiste Alagnoux

 

Erreur de la compilation des application windows managés en C# et VB.net avec le service pack 2 de microsoft windows XP( winxp SP2 )

Cet article est la traduction d’un article anglais servant à résoudre le bug de compilation System.ArithmeticException dans les application Windows managés en C# et VB.net.

Cet article est la reprise d’un article écrit par Daniel Turini concernant le bug de compilation System.ArithmeticException dans la System.drawing.dll ou encore dans System.Windows.Forms.

(JPEG)

Ce bug survient quand des opérations à virgule flottantes sont utilisées dans le code car le compilateur demande au FPU de gérer l’opération. Ce qui, depuis le services pack 2 de Windows nécessite l’initialisation explicite du FPU.

Sur certaine machine, aucunes compilations Winforms en C# n’est possible sans l’initiation du FPU. Ce bug peut également arriver lors du formattage des fontes, ou le changement de Labels, etc....

Le code mis au point par Daniel Turini permet une remise à zéro du FPU. Le code se décompose comme suit :


[DllImport("msvcr70.dll", CallingConvention =CallingConvention.Cdecl)]

public static extern int _controlfp(int n, int mask);
const int _RC_NEAR       = 0x00000000;
const int _PC_53         = 0x00010000;
const int _EM_INVALID    = 0x00000010;
const int _EM_UNDERFLOW  = 0x00000002;
const int _EM_ZERODIVIDE = 0x00000008;
const int _EM_OVERFLOW   = 0x00000004;
const int _EM_INEXACT    = 0x00000001;
const int _EM_DENORMAL   = 0x00080000;
const int _CW_DEFAULT    = ( _RC_NEAR + _PC_53 +    _EM_INVALID + _EM_ZERODIVIDE + _EM_OVERFLOW + _EM_UNDERFLOW +    _EM_INEXACT + _EM_DENORMAL);

static void ResetFPU()
{    
  _controlfp(_CW_DEFAULT ,0xfffff);
}

Pour plus d’informations :

-  Site de daniel Turini :

http://dturini.blogspot.com/2004_08_01_dturini_archive.html

-  Site de microsoft :

http://support.microsoft.com/default.aspx ?scid=KB ;EN-US ;q326219






2devs.com : A consulter...



2devs.com - Interfaçage de l'API Electre en C# Interfaçage de l’API Electre en C#
client windows C# pour API Electre XML. fonctionne sous Windows + .net framework 1.1.
par Jean-Baptiste Alagnoux

2devs.com - Récupération de Headers HTTP en ligne de commande Récupération de Headers HTTP en ligne de commande
Entièrement codé en C# ligne de commande, cet utilitaire est une base permetant de récupérer les headers HTTP des serveurs distants. l’application de base est disponible et compilée. le code source est inclut de le fichier zip.
par Jean-Baptiste Alagnoux

2devs.com - Utilitaire de capture d'écran en c-sharp Utilitaire de capture d’écran en c-sharp
Cet utilitaire sert à faire des captures d’écrans et les imprimer. Entierement programmé en C-Sharp, les fichiers sources sont téléchargeables sur cette page.
par Jean-Baptiste Alagnoux






SIRET : '41828681100017' - Code APE : '923A' - MDA : 'A718516'
2devs.com - réalisation et développement multimédia © www.2devs.com - 2006 2devs.com - réalisation et développement multimédia © www.2devs.com - 2006 2devs.com - réalisation et développement multimédia © www.2devs.com - 2006