Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Delphi | UpperCase на Delphi 7 (http://forum.oszone.net/showthread.php?t=60091)

Cognolio 26-01-2006 13:49 397367

Delphi | UpperCase на Delphi 7
 
собственно сабж.... а дело вот в чем: Эта фигня не работает с русскими буквами (Делфи 7). Т.е. как буква была маленькой, так она и остается (с английскими все нормально). Может кто подскажет чего...?
Можно конечно написать свою процедуру, но мне лень...

lehha 26-01-2006 13:58 397376

Стандартная WINAPI функция
LPTSTR CharUpper(LPTSTR lpsz);

Scorpion666 26-01-2006 14:38 397402

Оригинальная функция

function UpperCase(const S: string): string;
var
Ch: Char;
L: Integer;
Source, Dest: PChar;
begin
L := Length(S);
SetLength(Result, L);
Source := Pointer(S);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
if (Ch >= 'a') and (Ch <= 'z')
then Dec(Ch, 32);
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;


Исправленная функция

function UpperCaseAll(const S: string): string;
var
Ch: Char;
L: Integer;
Source, Dest: PChar;
begin
L := Length(S);
SetLength(Result, L);
Source := Pointer(S);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
if ((Ch >= 'a') and (Ch <= 'z')) or ((Ch >= 'а') and (Ch <= 'я'))
then Dec(Ch, 32);
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;

CyberDaemon 26-01-2006 15:42 397429

Конечно не работает - она для 7-битного представления символа.
Для русских буковок нужен AnsiUpperCase. Или в 7 Delphi эту функцию исключили?

Вообще-то это RTFM. Глянул бы хелп по UpperCase - не спрашивал бы :)


Время: 11:40.

Время: 11:40.
© OSzone.net 2001-