Mal davon abgesehen, dass so eine
Exception durchaus sinnvoll ist:
Warum castest du den Index von Integer nach Cardinal? Soweit ich weiß, ist Cardinal ein unsigned Wert, also geht dein Vorzeichen verloren und der Vergleich auf > -1 ist somit immer wahr.