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

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

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

7 ответов

22 просмотра
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 для сравнения

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Карта сайта