Префикс «Ansi» функций сравнения строк действительно никогда не означал ничего, кроме того, что языковой стандарт учитывался при сравнении строк вместо «простого» простого двоичного сравнения. В мире Unicode это все еще так. Семейство функций Ansi * также принимает (Unicode) строки в качестве своих параметров и учитывает локаль при выполнении сравнения.
Из документа AnsiCompareStr (D2009):
Большинство языков считают строчные буквы меньше, чем
соответствующие заглавные буквы. Это в отличие от ASCII
порядок, в котором строчные символы больше прописных
персонажи. Таким образом, установка S1 в «a» и S2 в «A» вызывает
AnsiCompareStr для возврата значения меньше нуля, тогда как CompareStr,
с теми же аргументами возвращает значение больше нуля.
То, что эффект "принятия во внимание локали" может отличаться в зависимости от локали. Это может иметь отношение к символам с акцентом или нет. В версиях Юникода это может фактически учитывать то, как составлены символы. Например, акцентированный e (é) может быть закодирован точно так же, но также может быть закодирован как два отдельных элемента: ударение и e.
Функции Ansi * и "обычные" сравнения строк включены в модуль SysUtils. Все они принимают строки в качестве своих параметров, и в Unicode Delphi это действительно означает UnicodeStrings.
Если вам нужно работать с AnsiStrings, вам нужно использовать модуль AnsiStrings. Он имеет тот же набор функций сравнения строк, но в этом модуле все они принимают AnsiStrings в качестве своих параметров.
Теперь, если вам не нужна совместимость со старыми версиями: используйте стандартные функции из SysUtils. Используйте нормальные, если байтового сравнения достаточно. Используйте анси, если вам необходимо принять во внимание региональные соображения.