StrToInt no es nada mas que un wrapper a la funcion Val, lo unico que hace de mas es hacer saltar una excepcion (lo hace la funcion ConvertErrorFmt) si la conversion es erronea, como se ve en el codigo fuente:
Código:
function StrToInt(const S: string): Integer;
var
E: Integer;
begin
Val(S, Result, E);
if E <> 0 then ConvertErrorFmt(@SInvalidInteger, [S]);
end;
Lo mejor es que uses directamente la funcion Val en tu programa en lugar de StrToInt.
Si quieres redefinir StrToInt el if que comprueba el error debes eliminarlo completamente y no utilizar excepciones para gestionar los errores: si utilizas excepciones es obligatorio que incluyas la unidad SysUtils ya que en ella se define el objeto base Excepcion.
Quizas sea mas sencillo que uses StrToIntDef si es posible, ya que no usa excepciones para gestionar el error, de modo que no te dara ningun problema al copiarla a una unit propia:
Código:
function StrToIntDef(const S: string; Default: Integer): Integer;
var
E: Integer;
begin
Val(S, Result, E);
if E <> 0 then Result := Default;
end;
Saludos