Bonjour,

J'utilise parfois une méthode pour lever aisément des exceptions en cas d'erreur, surtout à partir de code en asm :
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;
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
procedure TMyObject.FError(AMsg: String); // overload;
begin
  raise MyException.Create(AMsg);
end;
Comment faudrait-il appeler l'une ou l'autre des versions à partir de l'asm ???