Ist zwar auch nicht im Sinne des Erfinders, aber dies geht (auch mit Range-Checking):
Delphi-Quellcode:
var
I: ssShift..ssShift;
begin
for I in Shift do begin
...
end;
end;
EDIT:
Aber warum dann nicht auch gleich richtig?
Delphi-Quellcode:
var
I: ssShift..ssHorizontal;