Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Julien Bakmezdjian [MS]
Bonjour,
Effectivement, ce problème vient d'un logiciel tiers (un driver surement, j'ai souvent vu le cas avec des modems ou des drivers OLEDB) qui positionne certains flags du processeur, sans les remettre à leur position d'origine. Hors, certaines classes de la FCL partent du principe que ces flags sont bien dans leur position d'origine (pour être plus précis, il s'agit des flags FPU : http://www.intel.com/design/pentiumii/manuals/24319002.PDF, section 7.3.4).
Pour résoudre le problème, il faut créer une DLL (FPUExceptions.dll) en C++ avec ce code :
-------------------------------------------------FPUExceptions.cpp // FPUExceptions.cpp : Defines the entry point for the DLL application. // #include "stdafx.h" #include "FPUExceptions.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }
Public Overloads Shared Function fnFPUExceptions(ByVal bTurnOn As Int32) _
As Int32
End Function
'. . .
Enfin, il faut appeler cette fonction avant l'appel à la Font (dans le OnLoad de la Form par exemple), comme ceci :
Call fnFPUExceptions(1)
Cordialement,
Julien
"Vince" a écrit dans le message de news:
Bonjour,
j'ai créé une assembly contenant une Windows.Form.
Or a chaque foit que j'exécute mon assembly j'obtient cette erreur :
Erreur : Il y a eu un dépassement de capacité positif ou négatif dans l'opération arithmétique.
Il s'agit de l'exception System.ArithmeticException déclenché dans la méthode System.Drawing.Font.Initialize().
D'après un autre post ce problème viendrait : "d'un problème de registre processeur dut à l'installation d'une application tiers."
connaissez vous une solution pour résoudre ce problème en VB.NET ?
Je suis novice et je galère pour résoudre cette exception
merci d'avance
Bonjour,
Effectivement, ce problème vient d'un logiciel tiers (un driver surement,
j'ai souvent vu le cas avec des modems ou des drivers OLEDB) qui positionne
certains flags du processeur, sans les remettre à leur position d'origine.
Hors, certaines classes de la FCL partent du principe que ces flags sont
bien dans leur position d'origine (pour être plus précis, il s'agit des
flags FPU : http://www.intel.com/design/pentiumii/manuals/24319002.PDF,
section 7.3.4).
Pour résoudre le problème, il faut créer une DLL (FPUExceptions.dll) en C++
avec ce code :
-------------------------------------------------FPUExceptions.cpp
// FPUExceptions.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include "FPUExceptions.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Effectivement, ce problème vient d'un logiciel tiers (un driver surement, j'ai souvent vu le cas avec des modems ou des drivers OLEDB) qui positionne certains flags du processeur, sans les remettre à leur position d'origine. Hors, certaines classes de la FCL partent du principe que ces flags sont bien dans leur position d'origine (pour être plus précis, il s'agit des flags FPU : http://www.intel.com/design/pentiumii/manuals/24319002.PDF, section 7.3.4).
Pour résoudre le problème, il faut créer une DLL (FPUExceptions.dll) en C++ avec ce code :
-------------------------------------------------FPUExceptions.cpp // FPUExceptions.cpp : Defines the entry point for the DLL application. // #include "stdafx.h" #include "FPUExceptions.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }