Como recomendación para este tipo de datos, utilizá algún componente que solo te deje ingresar números (Como el TCurrencyEdit de las Rx, o puedes buscar en mi página un TIntEdit, que es para este tipo de datos)
Siempre que conviertas strings a números, que pueda llegar a producir un error, encargate de capturar este error, o si no te interesa el error puedes usar directamente alguna función con Default Value como la que propone Román (StrToIntDef)... o puedes validar que la entrada sean solo números, en lugar de producir una excepción innecesaria.
Esta funcioncita es un vestigio de mis orígenes en VB:
Código:
function IsNumber(Value: string): Boolean;
var fRes : Extended;
begin
Result := TextToFloat(PChar(Value), fRes, fvExtended);
end;
{$HINTS OFF}
function IsInteger(Value: string): Boolean;
var
iDummy,
iErr : Integer;
begin
Val(Value, iDummy, iErr);
Result := (iErr = 0);
end;
{$HINTS ON}
Para los Competidores:
Vale aclarar que mi punto tambien puede darse como ganador... pues ¿En que momento se produce el error?.... mas que obvia la respuesta