![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Gen |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 30.7.2006 Репутация: нет Всего: 1 |
Доброго времени суток!
Целый час копался в Билдере, но так и не смог найти процедуры, способной поднять мой русский char в верхний регистр. В результате процедуру пришлось писать самому что, разумеется, мне не нравится. Стандартный toupper поддерживает только английский. |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 7 Всего: 18 |
-------------------- Подпись больше не нужна |
|||
|
||||
Gen |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 30.7.2006 Репутация: нет Всего: 1 |
Ух ты!! Попробовал - работает, но только вот одна беда - слишком медленно.(
В рамках моей программы - неприемлимо. Время поиска по серьезной папке с 7ми секунд увеличивается аж до 25!! Добавлено @ 14:59 ЗЫ. Или может это я чего то делаю не так?? Сначала я создаю loacle loc. Затем пишу loc=locale(""Russian_Russia"). Затем - использую toupper(c,loc) в своей проге. Добавлено @ 15:01 А вообще - получается, что мой toupper в предложенном варианте вынужден перестраиваться при каждом его вызове?! Кошмар! Цена за универсальность - вот как это называется. Все же, судя по всему - в данном случае действительно целесообразно писать свой.( Это сообщение отредактировал(а) Gen - 7.5.2007, 15:05 |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Gen, создавать locale надо один раз.
|
|||
|
||||
Gen |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 30.7.2006 Репутация: нет Всего: 1 |
Проблема не в этом. Определяется он в .h, а инициализируется - сразу же после запуска программы и только один раз - вот что я имел в ввиду. Это сообщение отредактировал(а) Gen - 9.5.2007, 00:02 |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
ежели говорим о CP1251.....
W4FhLF тогда уж так (у тебя напротив в нижний регистр переведет)
(ежели нигде не ошибся я) ----- ну и границы неслабобы проверить (а то малоли это вообще не буква нужная...).... для DOS866 там разрывно получается... но идея таже)) -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Правда? Чудеса, пойду всем расскажу. И что, что в нижний? Трудно два символа изменить? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
jonie |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
символ 'ж' в cp1251 имеет код = 0xE6 0xE6 | 0x20 = 0xE6 странный перевод в ВЕРХНИЙ РЕГИСТР. когда как 0xE6 & 0xDF = 0xC6 == 'Ж' (что и надо)
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||||
|
|||||||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 2 Всего: 95 |
Gen, я конечно понимаю, что пост в разделе "Общие вопросы С++", но судя по тому, что ты
то возникает естесственный вопрос: в нём есть функция AnsiUpperCase. Чем она не устраивает?
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
W4FhLF |
|
||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Ты сейчас что хотел этим сказать? По-твоему я утверждаю, что мой код это перевод в верхний регистр? Где ж об этом было сказано? Это была основуа алгоритма, так, что не напрягайся, я прекрасно всё понимаю и в твоих объяснениях не нуждаюсь.
Ты обкурился чтоли?
Круто, да? Или тебе не нравится использование дополнительных 4х байт памяти? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||
|
|||||
jonie |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
пока что нет. нафиг вызывать strlen (который будет пробегать по всему массиву вплоть до 0, когда мы будем заниматься темже самым ? неужели нельзя у себя же и сравнивать) ? попробуй сделай прогони на 40 метровых массивах и засеки время.... в общем IntelVTune не посчитает тот код правильным по быстродействию.....
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||
|
|||||||
Gen |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 30.7.2006 Репутация: нет Всего: 1 |
ama_kid, AnsiUpperCase почему то у меня не катит. Скорость обработки уменшается примерно раз в 5. Что интересно: у некоторых моих товарищей он работает со скоростью нормальной, у некоторых с ним вообще, по их словам, наблюдаются какие то проблемы. exe-файл с AnsiUpperCase, полученный от товарища (у него он обрабатывает папку примерно секунд за 10) у меня ее же обрабатывал 30! Процессор мой быстрее, чем у него.
jonie, а не будет ли предложенный подход, кстати, машинно-зависимым? Это сообщение отредактировал(а) Gen - 9.5.2007, 20:12 |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
jonie, хехе... Ну ладно, давай так
![]() Своим примером я только лишь хотел сказать, что нужно работать с пятым битом, что для более или менее средней руки программиста было очевидно, но ты начал лезть со своими поправками, мол пацан ты чё дал-то? Ты чё дурак? Да у тебя не так работает и здечь медленно будет. Смари как надо... Вот так вот это всё выглядело. Я про скорость и быстродействие именно того кода, что я привёл не сказал ни слова, поэтому все твои наезды это всего-лишь попытка обратить внимание на себя и свой код, о котором я тоже в целом нислова не сказал. А если ты хочешь посорвероваться в скорости, то давай сделаем это. Предлагай свой оптимизированный вариант.
Ну давай попридераемся к словам. Когда стоящих аргументов нет, то надо же как-то выезжать ![]() Куда попадает dwLen ты можешь сам посмотреть, когда продизассемблируешь программу, а регистр - это сверхбыстрая ПАМЯТЬ находящаяся внутри процессора. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |