Hola si en tu caso todo es valido excepto los ciclos repetitivos puedes probar tambien con esta alternativa
Código Delphi
[-]function DigitAtPos(N: DWord;K:Byte): Dword;
begin
Result:=0;
if (N>=K) and (K>0) then
Result:=ord(IntToStr(N)[k])-$30;
end;
begin
WriteLn(DigitAtPos(1248935,4));
ReadLn;
end.
SALUDOS