Bonjour,
j'ai une classe exception dans une dl:
et je teste ce truc dans une appli
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #ifdef __DLL__ #define IMPORT_EXPORT __declspec(dllexport) #else #define IMPORT_EXPORT __declspec(dllimport) #endif IMPORT_EXPORT class itExcept{ protected: std::string TypeError; public: itExcept(void); itExcept(const char *_detail); itExcept(const std::string & str); itExcept(itExcept &except); std::string detail; }; itExcept::itExcept(void){detail="";} itExcept::itExcept(const char *_detail) {detail=_detail;} itExcept::itExcept(const std::string & _detail) {detail=_detail;} itExcept::itExcept(itExcept & ex) {detail=ex.detail;}
au deuxième throw "acces violation" et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 try{ try{ try{ throw itExcept("Tes"); } catch(itExcept &e) { ShowMessage(e.detail.c_str()); e.detail="TEST-----2"; throw e; } }catch(itExcept &e) { ShowMessage(e.detail.c_str()); e.detail="------------------------"; throw e; } }catch(itExcept &e) { ShowMessage(e.detail.c_str()); }
GETMEM.INC : mov ebx, TSmallBlockPoolHeader[edx].BlockType
Si je fait exactement la même chose sans utiliser la dll ça marche.
Si je ne modifie pas le e.detail dans le deuxième ça marche.
Si je modifie e.detail et que la chaine est plus petite que la précédente ça marche
j'utilise BDS2006
Quelq'un une idée?
Partager