forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Ручная замена регистра (когда UpCase не работает) (http://forum.boolean.name/showthread.php?t=6285)

Aziz 25.08.2008 22:33

Ручная замена регистра (когда 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;


ПОМОГИТЕ! НЕ ПОЛУЧАЕТСЯ! :crazy:

ViNT 26.08.2008 00:16

Ответ: Ручная замена регистра (когда UpCase не работает)
 
Я бы сделал примерно так:
PHP код:

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

Это работает только для русских букв, однако можно добавить английский алфавит и убить двух зайцев.

Piligrim 26.08.2008 00:41

Ответ: Ручная замена регистра (когда UpCase не работает)
 
можно и так
PHP код:

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


Aziz 26.08.2008 22:09

Re: Ручная замена регистра (когда UpCase не работает)
 
ПОЛЕЗНО СПАСИБО!


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot