Вниз
Скачать: CL | DM;

CharCase в буквах кирилицы.   Найти похожие ветки 

 
M_Untitled   (2004-11-17 10:57) [0]

Привет всем!
Решил я как-то использовать одну старую базу улиц города, она в DBF, а улицы написаны в верхнем регистре. А мне надо в нижнем, и чтоб первая буква заглавная была. В ручную переписать более 600 записей мне лень, думаю, функции UpperCase и LowerCase мне помогут. Но в кирилице не проходит такое дело - типа, Edit1.Text := LowerCase(string), если, конечно, Edit1.CharCase уже не установлен в LowerCase. Но тогда все буквы будут маленькими. Не стал пока ничего искать по этому вопросу, а тупо накидал на форму 3 эдита:
Edit1.CharCase=UpperCase, Edit2.CharCase=LowerCase, Edit3.CharCase=Normal, и стал эксперементировать. В первом Edit ввожу слово, копирую в пременную первую букву, остальную часть слова во второй Edit, и уже в третьем Edit склеиваю пременную и текст второго Edit. Выходит чудесно - слово с заглавной буквы,
остальные в нижнем регистре.
А теперь вопрос: поскольку второй Edit мне нужен только для промежуточного значения, я делаю ему Visible=False. И тогда, происходит интересная вещь: буквы остаются в верхнем регистре. Но если сделать второму Edit Visible=True, даже после присваивания "обрезанного" текста, то все проходит oк. Какая связь между
видимостью объекта Edit и регистром букв? И, уж, раз я все равно на форум вышел - как программно преводить регистр букв слов на кирилице? Спасибо всем, кто поделится информацией или кинет ссылку.


 
M_Untitled   (2004-11-17 10:59) [1]

прошу прощения, "кириллица" везде с одной "л" написал


 
Ega23 ©   (2004-11-17 11:01) [2]

RXLib, unit StrUtils, function ANSIProperCase


 
TUser ©   (2004-11-17 11:05) [3]

Не нужны тебе эдиты

if S[1] in ["а".."я"] then
S[1]:=char(ord(S[1])+(ord("А")-ord("а")));
for i:=2 to length(S) do
if S[i] in ["А".."Я"] then
S[i]:=char(ord(S[i])-(ord("А")-ord("а")));


 
KilkennyCat ©   (2004-11-17 11:06) [4]

AnsiLowerCase AnsiUpperCase без  всяких RxLib


 
M_Untitled   (2004-11-17 11:21) [5]

Прекрасно! Несколько вариантов ответов на последнюю часть вопроса: какая связь между видимостью Edit и регистром букв?


 
M_Untitled   (2004-11-17 11:44) [6]

Я, конечно, не настаиваю, но все же какая связь между видимостью Edit и регистром букв? Спасибо.


 
ЮЮ ©   (2004-11-17 12:01) [7]

Хоть бы "неработающий" код с невидимым Edit-oм привел.
У меня, например, все работает:

procedure TForm1.Button1Click(Sender: TObject);
var
 txt: string;
begin
 Edit2.Visible := false;
 txt := Edit1.Text;
 Edit2.Text :=
   AnsiUpperCase(Copy(txt, 1, 1)) + AnsiLowerCase(Copy(txt, 2, length(txt)));
 Edit1.Text := Edit2.Text;
end;  


 
KilkennyCat ©   (2004-11-17 12:01) [8]

не знаю. Предполагаю, что невидимому объекту не требуется перерисовка. Непонятно, зачем использовать Edit как буфер... для этого есть string


 
KilkennyCat ©   (2004-11-17 12:04) [9]


> ЮЮ ©   (17.11.04 12:01) [7]


не совсем то. автор использует свойство эдита CharCase, как я понял. Вероятно, его изменение у невидимого эдита не вызывает требуемого.


 
TUser ©   (2004-11-17 12:55) [10]


> ЮЮ ©   (17.11.04 12:01) [7]

Тут CharCase действительно не работает у невидимого эдита.

  Edit2.Text:=copy(Edit1.Text,2,length(Edit1.Text)-1);
  EDit3.Text:=Edit1.Text[1]+Edit2.Text;

Почему - я вот думаю.


 
M_Untitled   (2004-11-17 13:10) [11]

>ЮЮ [7]
Уважаемый, Вы применили функцию AnsiUpperCase, с ней все работает и без эдитов, в отличии от свойства Edit CharCase. Но, все равно, спасибо



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.041 c
4-1098472040
Seamcat
2004-10-22 23:07
2004.12.05
Окна


3-1099923051
DSKalugin
2004-11-08 17:10
2004.12.05
план выполнения запроса. индексы


14-1100248365
Григорьев Антон
2004-11-12 11:32
2004.12.05
Пятничная головоломка по Delphi


14-1099338839
Piter
2004-11-01 22:53
2004.12.05
Составление нового FAQ для этого сайта


6-1095639045
Лев Ландау
2004-09-20 04:10
2004.12.05
Экономия трафика ложь или быль? (IdHTTP)




   Наверх