![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Есть задача из ул.ленина сделать ул.Ленина, я использую [D5, D6, Win95/98]
dimanew © (2002-08-15 05:52:00)процедуры Copy,Delete, Insert
как сделать тоже, но через указатели?
Alx2 (2002-08-15 08:40:00) [1]>dimanew (15.08.02 05:52)
S - строка. S[k] - k-я буква в строке.
S[k] := UpCase(S[k]) - перевести S[k] в верхний регистр (для лат. варианта).
для русского надо переписать UpCase или использовать AnsiUpperCase, но это внесколько раз медленее.
S[k] := AnsiUpperCase(S[k])[1];
PS.
Написал, как сам интерпретировал вопрос. Но вообще-то он расплывчато сформулирован.
Skfi (2002-08-15 07:16:00) [2]Напиши по подробнее, что тебе требуется.
Leran2002 (2002-08-15 07:15:00) [3]Вот когдато нашел в ФАКАХ такую функцию мож тебе и подойдет:
function UpCaseRus( ch : Char ) : Char;
asm
CMP AL,"a"
JB @@exit
CMP AL,"z"
JA @@Rus
SUB AL,"a" - "A"
RET
@@Rus:
CMP AL,"я"
JA @@Exit
CMP AL,"а"
JB @@yo
SUB AL,"я" - "Я"
RET
@@yo:
CMP AL,"ё"
JNE @@exit
MOV AL,"Ё"
@@exit:
end;
...
for i:=1 to Length(S)-1 do
if S[i]="." then S[i+1]:=UpCaseRus(S[i+1]);
...