Hola,
Se me ocurre esta función:
Código Delphi
[-]
function Incrementa(Numero: Cardinal): Integer;
begin
if Numero < 10 then
Result := (Numero + 1) mod 10
else
Result := 10*Incrementa(Numero div 10) + Incrementa(Numero mod 10);
end;
Desafortunadamente, si el número no empieza en 1, en alguno de los incrementos el primer dígito será cero, y, al no contar los ceros iniciales, el siguiente paso fallará.
Podríamos usar una cadena para representar al número y usar algo como esto:
Código Delphi
[-]
function Incrementa2(Numero: String): String;
var
I: Integer;
begin
Result := Numero;
for I := 1 to Length(Numero) do
Result[i] := Char(((Ord(Result[i]) - Ord('0') + 1) mod 10) + Ord('0'))
end;
// Saludos