So würde ich das machen, wenn ich unbedingt die Stelle angeben will...
Delphi-Quellcode:
Function GetDigit (anInteger, aDigit : Integer) : Integer;
Begin
Case aDigit of
1 : Result := anInteger Mod 10;
2 : Result := (anInteger Div 10) Mod 10;
3 : Result := (anInteger Div 100) Mod 10;
4 : Result := (anInteger Div 1000) Mod 10;
5 : Result := (anInteger Div 10000) Mod 10;
6 : Result := (anInteger Div 100000) Mod 10;
7 : Result := (anInteger Div 1000000) Mod 10;
8 : Result := (anInteger Div 10000000) Mod 10;
9 : Result := (anInteger Div 100000000) Mod 10;
else Result := 0 // Mehr Stellen hat ein INTEGER nicht (und wenn doch: einfach erweitern)
End
End;
Das dürften -grob geschätzt- 2 Operationen und ein paar Vergleiche (Case of) sein. Schneller ginge es(?) nur mit einer Sprungtabelle. Weiterhin spart man eine Multiplikation ggü der vorherigen Version.