Bonjour,
J'utilise parfois une méthode pour lever aisément des exceptions en cas d'erreur, surtout à partir de code en asm :
Si je voulais surcharger la procédure FError pour qu'elle puisse accepter aussi bien une chaîne en paramètre, dans le style :
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 const ecTooElts = 0; // ... ErrStr: array[ecTooElts..ecOverSiz] of string = ( ('Trop d''éléments pour l''ensemble'), // ... procedure TMyObject.FError(AType: Cardinal); begin raise MyException.Create(ErrStr[AType]); end; // ... begin if ... then FError(ecTooElts); // dans une méthode de l'objet end; // ... asm // ... // **** traitement en cas d'erreur **** MOV EDX, ecSupMaxi // positionne la cause de l'erreur CALL FError // appelle la procédure de levée d'erreur end;
Comment faudrait-il appeler l'une ou l'autre des versions à partir de l'asm ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TMyObject.FError(AMsg: String); // overload; begin raise MyException.Create(AMsg); end;
Partager