IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Функция Strupper
CORS@R
сообщение 9.02.2006 11:53
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской
Реальное имя: Рамиль

Репутация: -  0  +


Нужно было перевести все маленькие символы строки в заглавные. Воспользовался вашей функцией
Function StrUpper(s: String):String;
Var i: Byte;
Begin
For i := 1 To Ord(s[0]) Do
Case s[i] Of
'a' .. 'z': s[i] := Chr(Ord(s[i])-$20);
#160 .. #175: s[i] := Chr(Ord(s[i])-$20);
#224 .. #239: s[i] := Chr(Ord(s[i])-$50)
End;
StrUpper := s
End;

Объясните мне пожалуйста что означает
a' .. 'z': s[i] := Chr(Ord(s[i])-$20);
#160 .. #175: s[i] := Chr(Ord(s[i])-$20);
#224 .. #239: s[i] := Chr(Ord(s[i])-$50)

а именно что такое $20 и &50
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 9.02.2006 12:07
Сообщение #2


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
а именно что такое $20 и &50

это просто числа записынне в шестандатиричной системе счисленияю (символ $ говорит о hex)
в десятичном представлении это соотвественно 32 и 80
а необходимо это, потому что кода заглавных и строчных символов в таблице ASCII различаются на 32.
А кирилический алфавит имеет разрыв.
Часть его имеет разницу в 32 а часть в 80..

(добавил позже klem4)
можешь изменить на такое:
Case S[I] Of
'a'..'z':S[I]:=Chr(Ord(S[I])-32);
'а'..'п':S[I]:=Chr(Ord(S[I])-32);
'р'..'я':S[I]:=Chr(Ord(S[I])-80)

Тогда и буквы видны какие заменяешь.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 9.02.2006 12:15
Сообщение #3


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Так что если напрягает, перепеши вот так :

'a' .. 'z': s[i] := Chr(Ord(s[i])-32);
#160 .. #175: s[i] := Chr(Ord(s[i])-32);
#224 .. #239: s[i] := Chr(Ord(s[i])-80)

;)

hex тут имхо для красоты использован ;))

Сообщение отредактировано: volvo - 7.11.2006 18:32


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
CORS@R
сообщение 9.02.2006 13:07
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской
Реальное имя: Рамиль

Репутация: -  0  +


Да нет меня не напрягает, просто я знаю что кириллица имеет разрыв и когда отнимал у меня не совпадал с результатом, вот я и подумал может это что-нибудь эдакое. А это оказалось hex

Сообщение отредактировано: CORS@R - 9.02.2006 13:07
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 6:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"