169 похожих чатов

Всем хорошей пятницы! Может кто-нибудь подсказать: чем отличается результат System.SysUtils.AnsiUpperCase от

System.SysUtils.TStringHelper.ToUpper?
Судя по коду, прихожу к отличию между CharUpperBuffW и LCMapStringW (если речь про Windows), а в версии под Linux, отличия только в локали (?) UTF8CompareLocale.

7 ответов

38 просмотров
Alexander-Somov Автор вопроса

и да, я уже спрашивал 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" соответственно...

Alexander-Somov Автор вопроса
Alexander Somov
и да, я уже спрашивал ChatGPT ))) он выдал пример:...

Т.е. как минимум под Windows конвертацию строки текста, а не символов, лучше делать через string.ToUpper или у кого-то есть обратный пример? PS: И да, речь про Delphi 11.2

Alexander Somov
и да, я уже спрашивал ChatGPT ))) он выдал пример:...

а вот алиса Результат функции System.SysUtils.AnsiUpperCase и System.SysUtils.TStringHelper.ToUpper может показаться идентичным, однако они имеют некоторые различия. Функция AnsiUpperCase работает с многобайтовыми кодировками (обычно UTF-8) и преобразует строку в верхний регистр, учитывая локаль операционной системы. Она особенно полезна для обработки данных, которые могут содержать символы различных языков. В свою очередь, функция ToUpper работает с однобайтовыми кодировками и переводит строку в верхний регистр без учета локали. Она может быть более подходящей для обработки строк, содержащих только символы латинского алфавита. Таким образом, выбор между AnsiUpperCase и ToUpper зависит от того, какую кодировку и локаль вы используете, а также от характера обрабатываемых данных.

Handatros
да

в общем картинка с ya.ru для сравнения

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта