![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ФУНКЦИЯ ПЕРЕВОДА БУКВ РУССКОГО АЛФАВИТА В ВЕРХНИЙ РЕГИСТР
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]
> чего-то противоречие какое-то
> строчные = маленькие, прописные = заглавные = в верхнем
> регистре
Все, срочно выкидываем ошибку и виснем =))