{ test for range with one-symbol string as left bound } { sequence of cases in cases } {$H-} var my_str: string; my_str_wide: widestring; my_str_ansi: ansistring; my_str_uni: unicodestring; i: integer; begin my_str := 'cab'; my_str_wide := 'cab'; my_str_ansi := 'cab'; my_str_uni := 'cab'; i := -1; case my_str of 'a'..'daa': begin case my_str[1] of 'a' : i := 0; 'b' : i := 0; 'c' : i := 1; end; case my_str[2] of 'a' : i := i * 1; 'b' : i := 0; 'c' : i := 0; end; case my_str[3] of 'a' : i := 0; 'b' : i := i * 1; 'c' : i := 0; end; end; else i := 0; end; if (i <> 1) then begin writeln('Error'); Halt(1); end; case my_str_wide of 'a'..'daa': begin case my_str_wide[1] of 'a' : i := 0; 'b' : i := 0; 'c' : i := 1; end; case my_str_wide[2] of 'a' : i := i * 1; 'b' : i := 0; 'c' : i := 0; end; case my_str_wide[3] of 'a' : i := 0; 'b' : i := i * 1; 'c' : i := 0; end; end; else i := 0; end; if (i <> 1) then begin writeln('Error'); Halt(1); end; case my_str_ansi of 'a'..'daa': begin case my_str_ansi[1] of 'a' : i := 0; 'b' : i := 0; 'c' : i := 1; end; case my_str_ansi[2] of 'a' : i := i * 1; 'b' : i := 0; 'c' : i := 0; end; case my_str_ansi[3] of 'a' : i := 0; 'b' : i := i * 1; 'c' : i := 0; end; end; else i := 0; end; if (i <> 1) then begin writeln('Error'); Halt(1); end; case my_str_uni of 'a'..'daa': begin case my_str_uni[1] of 'a' : i := 0; 'b' : i := 0; 'c' : i := 1; end; case my_str_uni[2] of 'a' : i := i * 1; 'b' : i := 0; 'c' : i := 0; end; case my_str_uni[3] of 'a' : i := 0; 'b' : i := i * 1; 'c' : i := 0; end; end; else i := 0; end; if (i <> 1) then begin writeln('Error'); Halt(1); end; writeln('OK!'); end.