Получаете ли вы "WideChar, уменьшенный до байта Char в выражениях набора. Рассмотрите возможность использования функции 'CharInSet' в сообщении 'SysUtils' unit"?
Вот проблема. В D2009 тип строки по умолчанию был изменен с AnsiString на UnicodeString. AnsiString использует один байт для каждого символа, давая вам 256 возможных символов. UnicodeString использует 2 байта на символ, давая до 64K символов. Но набор Паскаля может содержать до 256 элементов. Так что он не может создать «набор WideChar», потому что слишком много возможных элементов.
Предупреждение - это предупреждение о том, что вы пытаетесь сравнить txt [n], который является WideChar из строки Unicode, с набором символов. Он не может создать набор WideChars, поэтому ему пришлось сократить их до AnsiChars, чтобы поместить их в набор Pascal, и ваш txt [n] может быть полностью вне границ Ansi.
Вы можете исправить это, используя CharInSet или сделав txt AnsiString, если вы уверены, что вам не понадобятся символы Юникода для него. Или, если это не сработает, вы можете отключить предупреждение, но я бы посчитал это последним средством.