Vous ne pouvez pas (et ne devez pas) définir ceci dans la définition de la classe. Il n'y a pas de contexte ici où et pourquoi on l'appelle. Au lieu de cela, vous devez l'affecter en cours d'exécution, à tout endroit où cette exception peut être levée.
Cela peut être fait en dérivant votre classe de EInOutError
et en ajoutant un constructeur personnalisé à elle:
type
ECustomError = class(EInOutError)
public
constructor Create(AMsg: String; ACode: Integer); reintroduce;
end;
constructor ECustomError.Create(AMsg: String; ACode: Integer);
begin
inherited Create(AMsg);
ErrorCode := ACode;
end;
Ensuite, lorsque vous soulevez l'exception, vous l'appelez comme si ...
raise ECustomError.Create('Some error message', 129);
Vous pouvez aller un peu plus loin et ajouter ce code à votre message ...
constructor ECustomError.Create(AMsg: String; ACode: Integer);
begin
inherited CreateFmt('%s (Error Code %d)', [AMsg, ACode]);
ErrorCode := ACode;
end;
votre code tente d'un ssign une valeur dans sa définition. Ce n'est sûrement pas ce que vous cherchez. Vous devez l'affecter au moment où une exception est levée, est-ce correct? Si tel est le cas, implémentez un constructeur sur cette classe d'exception, et lorsque vous créerez l'exception, vous devrez passer cette variable. –
voulez-vous que ce code d'erreur soit affiché ou affecté à autre chose comme le résultat d'un fonction? –
@NasreddineAbdelillahGalfout Afficher uniquement. – strykerbits