Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ФУНКЦИЯ ПЕРЕВОДА БУКВ РУССКОГО АЛФАВИТА В ВЕРХНИЙ РЕГИСТР


Страницы:   1 2

Gelios ©   (2006-05-04 18:40:00) 

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


Anatoly Podgoretsky   (2006-05-08 20:03:00) [1]

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


KilkennyCat   (2006-05-08 13:32:00) [2]


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


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


Джо   (2006-05-08 13:30:00) [3]

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

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

:)


Virgo_Style   (2006-05-08 09:51:00) [4]

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


begin...end   (2006-05-08 09:22:00) [5]

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


Anatoly Podgoretsky   (2006-05-08 09:09:00) [6]

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


Джо   (2006-05-08 03:12:00) [7]

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

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.


:-)


DevilDevil   (2006-05-08 02:41:00) [8]

 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;

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


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

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


antonn   (2006-05-07 17:50:00) [10]

и тут пришел несравненный 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;


Gydvin   (2006-05-07 15:04:00) [11]

ansiuppercase


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

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

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


KEHT   (2006-05-07 03:23:00) [13]

Не понимаю, чем вам ответ @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;


KilkennyCat   (2006-05-04 19:50:00) [14]


>  [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;


begin...end   (2006-05-04 19:44:00) [15]

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

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


KilkennyCat   (2006-05-04 19:40:00) [16]

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

ошибся..


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


> [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;


@BraIN   (2006-05-04 19:19:00) [18]

AnsiUpperCase


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

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

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. Труд сделал из ... человека =)


Boris Marchenko   (2006-05-04 18:54:00) [20]


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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо