Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.28;
Скачать: CL | DM;

Вниз

ФУНКЦИЯ ПЕРЕВОДА БУКВ РУССКОГО АЛФАВИТА В ВЕРХНИЙ РЕГИСТР   Найти похожие ветки 

 
Gelios ©   (2006-05-04 18:40) [0]

Подскажите как перевести буквы русского алфавита в верхний регистр (т.е из прописных в строчные)!!!!!?????


 
Jeer ©   (2006-05-04 18:42) [1]

Справку не пробовал читать ?
Есть такой SysUtils и string handling routines.


 
Anatoly Podgoretsky ©   (2006-05-04 18:45) [2]

И не надо так кричать.


 
Desdechado ©   (2006-05-04 18:51) [3]

> в верхний регистр (т.е из прописных в строчные)
чего-то противоречие какое-то
строчные = маленькие, прописные = заглавные = в верхнем регистре


 
Boris Marchenko ©   (2006-05-04 18:54) [4]


> чего-то противоречие какое-то
> строчные = маленькие, прописные = заглавные = в верхнем
> регистре

Все, срочно выкидываем ошибку и виснем =))


 
Loginov Dmitry ©   (2006-05-04 19:14) [5]

Ладно, так и быть, помогу

function ToUpperCase(C: Char): Char;
begin
 if C = "a" then C := "A";
 if C = "b" then C := "B";
.......
 if C = "z" then C := "Z;

 Result := C;
end;


P.S. Труд сделал из ... человека =)


 
@BraIN ©   (2006-05-04 19:19) [6]

AnsiUpperCase


 
ЛшдлуттнСфе   (2006-05-04 19:39) [7]


> [5] Loginov Dmitry ©   (04.05.06 19:14)


оптимизированный:

function ToUpperCase(C: Char): Char;
begin
if C = "a" then Result := "A" else
if C = "b" then Result := "B" else
.......
if C = "z" then Result := "Z;
end;

логично оптимизированный:

function ToUpperCase(C: Char): Char;
begin
 Case C of
  "a" : Result := "A";
  "b" : Result := "B";
.......
  "z" : Result := "Z;
 end;
end;

оптимизированный по количеству текста

function ToUpperCase(C: Char): Char;
begin
if C in ["A".."Z", "a".."z"] then Result := chr(ord(C) + 32);
end;


 
KilkennyCat ©   (2006-05-04 19:40) [8]

function ToUpperCase(C: Char): Char;
begin
if C in ["a".."z"] then Result := chr(ord(C) + 32);
end;

ошибся..


 
begin...end ©   (2006-05-04 19:44) [9]

> Loginov Dmitry ©   (04.05.06 19:14) [5]

Я извиняюсь, но вопрос был про русские буковки...


 
KilkennyCat ©   (2006-05-04 19:50) [10]


>  [9] begin...end ©   (04.05.06 19:44)


Эх, тогда с Ё проблемы...

Новая версия, исправленная и дополненная и оформленная...

function ToUpperCase(C: Char): Char;
begin
if C in ["а".."я"] then Result := chr(ord(C) + 32) else if C = "ё" then Result:= "Ё" else Result := C;
end;


 
KEHT ©   (2006-05-07 03:23) [11]

Не понимаю, чем вам ответ @BraIN"a не понравился? Зачем велосипед изобретать?

Вот так решают проблему умные люди, писавшие SysUtls:

function AnsiUppCase(const S: string): string;
var
 Len: Integer;
begin
 Len := Length(S);
 SetString(Result, PChar(S), Len);
 if Len > 0 then CharUpperBuff(Pointer(Result), Len);
end;


 
Джо ©   (2006-05-07 03:40) [12]

> [11] KEHT ©   (07.05.06 03:23)
> Не понимаю, чем вам ответ @BraIN"a не понравился?

Да в общем, тем, что еще в [1] уже всё было сказано :)


 
Gydvin ©   (2006-05-07 15:04) [13]

ansiuppercase


 
antonn ©   (2006-05-07 17:50) [14]

и тут пришел несравненный antonn... :)

function UpperNafigRusskiyText(ch: Char): Char;
asm
@@Rus:
 CMP   AL,"я"
 JA    @@Exit
 CMP   AL,"а"
 JB    @@yo
 SUB   AL,"я" - "Я"
 RET
@@yo:
 CMP   AL,"ё"
 JNE   @@exit
 MOV   AL,"Ё"
@@exit:
end;


 
KEHT ©   (2006-05-08 02:00) [15]

М-да. Чем же вы люди обкурильсь так, что всё успокоиться не можете? Я тоже такого хочу!! :)


 
DevilDevil ©   (2006-05-08 02:41) [16]

 function UpperCase(const S : string) : string;
begin
 Result := string(CharUpper(pchar(S)));
end;

 function LowerCase(const S : string) : string;
begin
 Result := string(CharLower(pchar(S)));
end;

Великолепно работают как с русскими, так и с английскими


 
Джо ©   (2006-05-08 03:12) [17]

Никто не убедит меня, что старые добрые таблицы не есть самый лучший и быстрый вариант:

var
 ConversionTable: array [0..255] of Char;
 I: Integer;

function UpperChar (Ch: Char): Char;
asm
 mov al,[eax+ConversionTable]
end;

initialization
 // можем сразу и константой объявить, но не будем такими пуристами :)
 for I := Low(ConversionTable) to High(ConversionTable) do
   ConversionTable[I] := ANSIUpperCase(Chr(I))[1]
end.


:-)


 
Anatoly Podgoretsky ©   (2006-05-08 09:09) [18]

Джо ©   (08.05.06 03:12) [17]
Так и есть, только зачем же ассемблером по воробьям?


 
begin...end ©   (2006-05-08 09:22) [19]

К тому же, в [17] есть ошибка. Причём именно в ассемблерной строке.


 
Virgo_Style ©   (2006-05-08 09:51) [20]

Раз пошла такая пьянка, предлагаю таблицу хранить в БД :o)


 
Джо ©   (2006-05-08 13:30) [21]

> [19] begin...end ©   (08.05.06 09:22)
> К тому же, в [17] есть ошибка. Причём именно в ассемблерной
> строке.

Тогда мы масочку...
 and eax, $000000FF
 mov al,[eax+ConversionTable]

:)


 
KilkennyCat ©   (2006-05-08 13:32) [22]


> [20] Virgo_Style ©   (08.05.06 09:51)


В какой-нить дико старой БД :) Или в листах екселя...


 
Anatoly Podgoretsky ©   (2006-05-08 20:03) [23]

Virgo_Style ©   (08.05.06 09:51) [20]
Слабо, даешь трехзвенку



Страницы: 1 вся ветка

Текущий архив: 2006.05.28;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.03 c
15-1146264001
Atratata
2006-04-29 02:40
2006.05.28
Помогите с анг. языком


2-1147361574
Юнкер
2006-05-11 19:32
2006.05.28
сохранение в файл данных


2-1146933992
Antony000
2006-05-06 20:46
2006.05.28
Помогите с отрисовкой формы!


2-1147460349
News
2006-05-12 22:59
2006.05.28
Объекты


15-1146591343
Sergey Masloff
2006-05-02 21:35
2006.05.28
Крамольная мысль - а оно вообще надо? Про раздел начинающим да