Delphi | UpperCase на Delphi 7
собственно сабж.... а дело вот в чем: Эта фигня не работает с русскими буквами (Делфи 7). Т.е. как буква была маленькой, так она и остается (с английскими все нормально). Может кто подскажет чего...?
Можно конечно написать свою процедуру, но мне лень... |
Стандартная WINAPI функция
LPTSTR CharUpper(LPTSTR lpsz); |
Оригинальная функция
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; |
Конечно не работает - она для 7-битного представления символа.
Для русских буковок нужен AnsiUpperCase. Или в 7 Delphi эту функцию исключили? Вообще-то это RTFM. Глянул бы хелп по UpperCase - не спрашивал бы :) |
Время: 11:40. |
Время: 11:40.
© OSzone.net 2001-