System.SysUtils.TStringHelper.ToUpper?
Судя по коду, прихожу к отличию между CharUpperBuffW и LCMapStringW (если речь про Windows), а в версии под Linux, отличия только в локали (?) UTF8CompareLocale.
и да, я уже спрашивал ChatGPT ))) он выдал пример: var myAnsiString: AnsiString; myUnicodeString: string; begin myAnsiString := 'hello, 你好'; // Contains both ANSI and Unicode characters // Using AnsiUpperCase ShowMessage(AnsiUpperCase(myAnsiString)); // Output: 'HELLO, ?' // Using TStringHelper.ToUpper myUnicodeString := myAnsiString; // Implicit conversion to UnicodeString ShowMessage(myUnicodeString.ToUpper); // Output: 'HELLO, 你好' end; , который очевидно работает не так, как ))) Но учитывая справку MSDN, а именно примечание: Note that CharUpperBuff always maps lowercase I ("i") to uppercase I, even when the current language is Turkish or Azerbaijani. Решил проверить прицельно для турецкого, взял слово "yazılır" из турецкой wiki, получаю варианты: "YAZıLıR" и "YAZILIR" соответственно...
Т.е. как минимум под Windows конвертацию строки текста, а не символов, лучше делать через string.ToUpper или у кого-то есть обратный пример? PS: И да, речь про Delphi 11.2
а вот алиса Результат функции System.SysUtils.AnsiUpperCase и System.SysUtils.TStringHelper.ToUpper может показаться идентичным, однако они имеют некоторые различия. Функция AnsiUpperCase работает с многобайтовыми кодировками (обычно UTF-8) и преобразует строку в верхний регистр, учитывая локаль операционной системы. Она особенно полезна для обработки данных, которые могут содержать символы различных языков. В свою очередь, функция ToUpper работает с однобайтовыми кодировками и переводит строку в верхний регистр без учета локали. Она может быть более подходящей для обработки строк, содержащих только символы латинского алфавита. Таким образом, выбор между AnsiUpperCase и ToUpper зависит от того, какую кодировку и локаль вы используете, а также от характера обрабатываемых данных.
edge мне что-то похожее выдал
на русском?
Обсуждают сегодня