Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.024 c
6-1096115383
Yuri Btr
2004-09-25 16:29
2004.12.05
Не возникает события OnConnect


14-1100712272
Yanis
2004-11-17 20:24
2004.12.05
Про WinAmp


4-1098606535
Ashle
2004-10-24 12:28
2004.12.05
Как перезапустить сессию Application ? сэмулировать перезапуск


1-1100698733
Алексей
2004-11-17 16:38
2004.12.05
Перерисовка TTreeNode


11-1083334534
acruc
2004-04-30 18:15
2004.12.05
Create ActiveX in KOL ?