Manchmal, z.B. bei Rennen, muss man angeben, an welcher Position steht:
Zum Beispiel "1st", "4th"!
Problem in der Englischen Sprache ist, dass nicht alle Ordinalen Werte mit "th" aufhören. Aber auch nicht alle X1 mit "st" (z.B. 11)...
Deshalb habe ich dafür eine Funktion geschrieben.
Sie erwartet den Integer, und gibt ihn als String wieder zurück (mit Ordinaler Endung).
Wenn man den Boolean AOnlyExt auf wahr setzt (standard ist false), dann gibt es nur die Endung zurück: "th" statt "14th"
Hier nun die Funktion:
Delphi-Quellcode:
function GetOrdinalNumber(const ANumber : Integer; const AOnlyExt : Boolean = false) : string;
begin
if not AOnlyExt then
Str(ANumber, Result)
else
Result := '';
// Spezial: eleventh, twelfth, thirdteenth
if ((ANumber mod 100) in [11..13]) then
begin
Result := Result + 'th';
end
else
begin
case ANumber mod 10 of
1 : Result := Result + 'st';
2 : Result := Result + 'nd';
3 : Result := Result + 'rd';
else Result := Result + 'th';
end;
end;
end;
[edit=fkerber]Für die CodeLib aufbereitet. Mfg, fkerber[/edit]