![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Почему они переводят только латинские, а кириллицу игнорируют?
![]() |
|
#2
|
||||
|
||||
|
В таком случае можеш сделать собственную функцию.
|
|
#3
|
|||
|
|||
|
придется
![]() |
|
#4
|
||||
|
||||
|
Код:
function UpCase(ch: char): char;
begin
if (ch in ['a'..'z', 'а'..'я'])
then result := chr(ord(ch) - 32)
else result := ch;
end;
function LoCase(ch: char): char;
begin
if (ch in ['A'..'Z', 'А'..'Я'])
then result := chr(ord(ch) + 32)
else result := ch;
end;
function UpperCase(s: string): string;
var
i: integer;
begin
result := s;
for i := 1 to length(result) do
if (result[i] in ['a'..'z', 'а'..'я'])
then result[i] := chr(ord(result[i]) - 32);
end;
function LowerCase(s: string): string;
var
i: integer;
begin
result := s;
for i := 1 to length(result) do
if (result[i] in ['A'..'Z', 'А'..'Я'])
then result[i] := chr(ord(result[i]) + 32);
end;
procedure TForm1.Button1Click(Sender: TObject);
const
s = 'zZцЦ.';
var
i: integer;
begin
Form1.Caption := 'DownCase: ';
for i := 1 to Length(s) do
Form1.Caption := Form1.Caption + LoCase(s[i]);
Form1.Caption := Form1.Caption + ' UpCase: ';
for i := 1 to Length(s) do
Form1.Caption := Form1.Caption + UpCase(s[i]);
Form1.Caption := Form1.Caption + ' UpperCase: ' +
UpperCase(s);
Form1.Caption := Form1.Caption + ' LowerCase: ' +
LowerCase(s);
end;
Взято из Delphi Russian Knowledge Base |
|
#5
|
|||
|
|||
|
Код:
function RusCase(const S: string; updown: string): string;
var
Ch: Char;
L: Integer;
Source, Dest: PChar;
begin
if updown = 'up' then
begin
L := Length(S);
SetLength(Result, L);
Source := Pointer(S);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
if (Ch >= 'а') and (Ch <= 'я') then Dec(Ch, 32);
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end
else
if updown = 'down' then
begin
L := Length(S);
SetLength(Result, L);
Source := Pointer(S);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
if (Ch >= 'А') and (Ch <= 'Я') then Inc(Ch, 32);
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;
end;чего тут не так? попробовал - не работает, хотя компилит.. |
|
#6
|
|||
|
|||
|
А воспользоваться Ansi вариантами нельзя?
AnsiUpperCase AnsiLowerCase |