Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Узнать регистр русского символа |
Автор: becks 21.7.2011, 09:51 | ||
Добрый день, собственно вопрос, как у AnsiString (строка содержит русские символы) узнать в каком регистре первый символ? Спасибо. Добавлено через 8 минут и 54 секунды Попробовал:
, но что-то не срабатывает, всегда возвращает false. |
Автор: Earnest 21.7.2011, 10:52 |
Так локаль-то непустую нужно передавать, а русскую (ну т.е. не по-умолчанию). Насколько я помню, по-умолчанию устанавливается т.н. С-локаль, т.е. самый минимум, совместимый с глубокой древностью. Добавлено через 44 секунды Кроме того, первый символ - это Work[0], а не Word[1]... |
Автор: borisbn 21.7.2011, 10:59 | ||
Добавлено через 45 секунд в AnsiString - нет. |
Автор: becks 21.7.2011, 11:03 | ||||
Все, разобрался. Да, локаль нужно передавать русскую:
По поводу Work[0] - ошибаетесь, в ansistring начинается с 1. А так спасибо. |
Автор: Dem_max 21.7.2011, 11:57 |
AnsiString это же дельфийское наследие, а там все с 1. |
Автор: Earnest 21.7.2011, 14:34 |
Вот ужас-то... я думала, что "AnsiString" это просто "ANSI string", а это, оказывается, хитрый тип... |
Автор: borisbn 21.7.2011, 14:48 |
Earnest, в VCL ещё много "хитрого". Например виртуальный конструктор (я не оговорился - конструктор) у типов, наследованных от TObject ![]() |
Автор: Earnest 21.7.2011, 15:01 |
Ну, виртуальный конструктор - это, кстати, неплохо. Это же, фактически, реализованный паттерн. При условии, что синтаксически он отличается от "нормального" конструктора. А вообще борланды сначала изнасиловали Паскаль, превратив его в Дельфи, а теперь и за С++ взялись. Впрочем, что это я, далеко не теперь: еще в досовской версии у них были хитрые виртуальные методы, номерные кажется. Мне даже какое-то время это нравилось... ![]() |
Автор: bsa 21.7.2011, 23:18 |
borisbn, ну... это не виртуальный конструктор скорей. А преждевременная подмена виртуальной таблицы. Честно говоря, ума не приложу зачем им это надо. |
Автор: borisbn 21.7.2011, 23:45 | ||
Согласен. Это я так его назвал... не знаю почему... Это не термин из книги, а мои измышлизмы ![]() |
Автор: xvr 24.7.2011, 12:06 |
У них есть встроенная (на уровне VCL/языка) фабрика классов (Тип TClass и оператор __classid если не ошибаюсь). Они собственно и используют виртуальные конструкторы. А сами фабрики классов используются в системе стриминга, которая в свою очередь используется для сохранения форм GUI в виде ресурсов в исполняемых файлах. Вот такая вот матрешка ![]() Причем с версии BCB 6 эти застримленные формы хранятся в текстовом виде, что нетрудно увидеть, открыв любой BCB/Delphi экзешник в текстовом редакторе (или посмотрев в файлы *.dfm в директории с проектом) |
Автор: spyswamp 25.7.2011, 10:41 |
xvr, угум, любой редактор ресурсов (аля Restorator) эту секцию с формами выделяет вообще отдельным моментом (веткой). Т.ч. практически весь GUI на блюдечке. Не помню как там с динамическими формами/компонентами, но если был *.dfm для формы - то присутствие секции 100%. |