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

 
 Ответить  Открыть новую тему 
> ansi_to_oem('ё') Runtime Error
klem4
сообщение 3.06.2007 14:01
Сообщение #1


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

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

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


Есть ф-я

function ANSI_to_OEM(s: Char): Char;
begin
case s of
'А'..'п': dec (s, 64);
'р'..'я': dec (s, 16);
'Ё','Є': inc (s, 72);
'ё','є': inc (s, 57);
'Ї': inc (s, 69);
'ї': inc (s, 54);
end;
ANSI_to_OEM := s;
end;


Следующий вызов:

ansi_to_oem('ё')


приводит FPC в ужас.

Почему ?!




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


Человек
*****

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

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


Цитата(klem4 @ 3.06.2007 14:01) *
приводит FPC в ужас.Почему ?!
а в чем ужас ? у меня компилируется и и сполняется..
реализовал так
function ANSI_to_OEM(s: Char): Char;
begin
case s of
'А'..'п': dec (s, 64);
'р'..'я': dec (s, 16);
'Ё','Є': inc (s, 72);
'ё','є': inc (s, 57);
'Ї': inc (s, 69);
'ї': inc (s, 54);
end;
ANSI_to_OEM := s;
end;
begin
ansi_to_oem('ё');
readln;
read;
end.




--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 3.06.2007 15:50
Сообщение #3


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

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

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


У меня RTE 215 ... А какой символ выдает прога ? 'ё' или что-то другое ?


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


Человек
*****

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

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


Цитата(klem4 @ 3.06.2007 15:50) *
А какой символ выдает прога ? 'ё' или что-то другое ?
если написать
writeLn ( ansi_to_oem('ё') );
то будет ё...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 3.06.2007 16:01
Сообщение #5


code warrior
****

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

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


Kelm4, попробуй указать код символа 0xB8, а не 'ё'.

Сообщение отредактировано: hardcase - 3.06.2007 16:03


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 3.06.2007 16:23
Сообщение #6


Человек
*****

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

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


тут еще что то есть... если переменную(русскую) для функции читаем с клавы , то выводится первый символ названия переменной(!) blink.gif
ничего не понимаю wacko.gif


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 3.06.2007 21:24
Сообщение #7


Профи
****

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

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


Цитата
тут еще что то есть... если переменную(русскую) для функции читаем с клавы , то выводится первый символ названия переменной(!)
А у меня при любом названии переменной выводится 'с', и некоторые другие буквы глючат, например при нажатии 'к' выводится символ 'Є'... Думаю проблема в функции smile.gif

PS Но сначала я тоже удивился, так как переменную назвал ch... =)


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 4.06.2007 10:56
Сообщение #8


Человек
*****

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

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


да, это я не много погарячился, наверно Archon прав... проблема в функции...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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