Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 25.08.2008, 22:33   #1
Aziz
Оператор ЭВМ
 
Регистрация: 24.02.2007
Сообщений: 20
Написано 0 полезных сообщений
(для 0 пользователей)
Сообщение Ручная замена регистра (когда UpCase не работает)

Как известно с кирилицей UpCase не пашет!
Итак! Исправте меня - нуба! )

text:= // это текст в неизвестном регистре!

procedure perevod;
begin
res := openResource('/baza.txt');

for pos:= 0 to length(text) do // 0-0-0-0-0-
begin
case:=getChar(text, pos);

if case='А' then case='а';
if case='Б' then case='б';
if case='В' then case='в';
if case='Г' then case='г';
if case='Д' then case='д';
if case='Е' then case='е';
if case='Ё' then case='ё';
if case='Ж' then case='ж';
if case='З' then case='з';
if case='И' then case='и';
if case='Й' then case='й';
if case='К' then case='к';
if case='Л' then case='л';
if case='М' then case='м';
if case='Н' then case='н';
if case='О' then case='о';
if case='П' then case='п';
if case='Р' then case='р';
if case='С' then case='с';
if case='Т' then case='т';
if case='У' then case='у';
if case='Ф' then case='ф';
if case='Х' then case='х';
if case='Ц' then case='ц';
if case='Ч' then case='ч';
if case='Ш' then case='ш';
if case='Щ' then case='щ';
if case='Ы' then case='ы';
if case='Ъ' then case='ъ';
if case='Ь' then case='ь';
if case='Э' then case='э';
if case='Ю' then case='ю';
if case='Я' then case='я';
dcase:=dcase+ord(case);;
end;
text:=dcase;


ПОМОГИТЕ! НЕ ПОЛУЧАЕТСЯ!
(Offline)
 
Ответить с цитированием
Старый 26.08.2008, 00:16   #2
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Ручная замена регистра (когда UpCase не работает)

Я бы сделал примерно так:
function UpperCase(S:string):string;
const
 
LC='абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
 
UC='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
var
 
I,P:integer;
 
R:string;
 
C:char;
begin
  
for i:=0 to Length(S) do
  
begin
   C
:=GetChar(S,I);
   
P:=pos(LC,C);
   if 
P<>-1 then
    R
:=R+GetChar(UC,P)
   else
    
R:=R+C;
  
end;
  
UpperCase:=R;
  
end
Это работает только для русских букв, однако можно добавить английский алфавит и убить двух зайцев.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Aziz (26.08.2008)
Старый 26.08.2008, 00:41   #3
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Ручная замена регистра (когда UpCase не работает)

можно и так
function UpperCase(string) : string;
var
    
iinteger;
begin
    
for i:= 0 to length(s) do begin
        c 
:= ord(GetChar(si));
        if ((
c>1071) and (c<1103)) or (c=1105then
            c 
:= c-32;
        
:= SetChar(schr(c), i);    
    
end;
    
UpperCase := s;
end
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Piligrim за это полезное сообщение:
Aziz (26.08.2008), Phantom (26.08.2008), Tronix (26.07.2009)
Старый 26.08.2008, 22:09   #4
Aziz
Оператор ЭВМ
 
Регистрация: 24.02.2007
Сообщений: 20
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Ручная замена регистра (когда UpCase не работает)

ПОЛЕЗНО СПАСИБО!

Последний раз редактировалось HolyDel, 26.08.2008 в 23:01.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Когда-то тоже был я мьюзикмэном ) Damp Личное творчество 13 26.05.2010 19:13
Замена WMI zombiee C++ 0 25.09.2009 09:21
Таксофон - замена Skype pax Болтовня 1 11.06.2007 02:38
Когда SetOrigin не в силах помочь... johnk 2D-программирование 3 26.04.2007 21:04
Замена Rnd alcosholik FAQ 1 12.10.2005 18:16


Часовой пояс GMT +4, время: 01:37.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com