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

Вниз

Изменение регистра символов   Найти похожие ветки 

 
Do№   (2002-01-24 19:27) [0]

Подскажите плз как поменять регистр символов в символьной переменной :
ааааа надо заменить на ААА

делфи командой UpperCase почемуто конвертирует тока английские символы в строке


 
Tosov ©   (2002-01-24 19:30) [1]

Попробуй CharUpper


 
Chris ©   (2002-01-24 19:34) [2]

Я использую свою процедуру:

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

function DownCase(Str: string): string;
begin
Result:="";
While Str<>"" do
begin
if pos(copy(Str,1,1),FUpChar)>0 then
Result:=Result+copy(FDnChar,pos(copy(Str,1,1),FUpChar),1)
else
Result:=Result+copy(Str,1,1);
Delete(Str,1,1);
end;
end;

function UpCase(Str: string): string;
begin
Result:="";
While Str<>"" do
begin
if pos(copy(Str,1,1),FDnChar)>0 then
Result:=Result+copy(FUpChar,pos(copy(Str,1,1),FDnChar),1)
else
Result:=Result+copy(Str,1,1);
Delete(Str,1,1);
end;
end;


 
Tosov ©   (2002-01-24 19:43) [3]

Chris
А не проще ли было заменять символы строки str[num] - имхо Delete и Copy это по ресурсам накладнее по сравнению с этим.


 
Chris ©   (2002-01-24 19:50) [4]

Согласен.
Так выглядит короче:

function TUCStr.DownCase(Str: string): string;
var i: integer;
begin
Result:=Str;
for i:=1 to length(Str) do
if pos(Str[i],FUpChar)>0 then
Result[i]:=FDnChar[pos(Str[i],FUpChar)];
end;

function TUCStr.UpCase(Str: string): string;
var i: integer;
begin
Result:=Str;
for i:=1 to length(Str) do
if pos(Str[i],FDnChar)>0 then
Result[i]:=FUpChar[pos(Str[i],FDnChar)];
end;



 
Юрий Зотов ©   (2002-01-24 19:50) [5]

Все замечательно, но простой вызов AnsiUpperCase избавляет от необходимости изобретать велосипеды.

А чтение справки по UpperCase избавляет от необходимости задавать вопросы и дожидаться ответов с этими велосипедами.


 
Chris ©   (2002-01-25 08:27) [6]

Точно, а изучение английского языка избавляет нас от форумов и приковывает наше внимание к кнопке F1. ;-)


 
Anatoly Podgoretsky ©   (2002-01-26 21:50) [7]

Do№ (24.01.02 19:27)

Надеюсь вопрос то ты правильно задал? Тогда

for I := 1 to Length[S] do
if S[I] = "a" then S[I] := "A";

Ну а если универсально, то с помощью таблицы преобразований, для локализированных систем можно использовать AnsiUpperCase



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

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

Наверх




Память: 0.48 MB
Время: 0.006 c
14-32324
Dim!S
2001-12-21 12:30
2002.02.11
Распространение программы


4-32378
ОГО
2001-12-11 17:44
2002.02.11
Как открывать дверцы CDROM если их два на компе ?


1-32197
sasa_verman
2002-01-29 14:32
2002.02.11
TClientDataSet нужно заполнить ланими из масива, а сам ДатаСет никчему не привязан


3-32153
Yu
2002-01-16 14:03
2002.02.11
Библиотека EhLib


14-32347
Ross
2001-12-20 20:32
2002.02.11
RX lib