X-Git-Url: https://deadsoftware.ru/gitweb?p=d2df-editor.git;a=blobdiff_plain;f=src%2Fshared%2Futils.pas;h=14e6f767537a9ef1a39fd50f8a63bcaf5b6fa17b;hp=04780bb6eae7a0ee216ab2465c71ec19d6d8b234;hb=f232b1e693edf980b15da896079eaa26bab5ef9d;hpb=3ea052bd6b0f429986d2ebae74d04a01875ac9fc diff --git a/src/shared/utils.pas b/src/shared/utils.pas index 04780bb..14e6f76 100644 --- a/src/shared/utils.pas +++ b/src/shared/utils.pas @@ -64,8 +64,10 @@ function addWadExtension (fn: AnsiString): AnsiString; // convert number to strig with nice commas function Int64ToStrComma (i: Int64): AnsiString; -function UpCase1251 (ch: Char): Char; -function LoCase1251 (ch: Char): Char; +function UpCase1251 (ch: AnsiChar): AnsiChar; inline; +function LoCase1251 (ch: AnsiChar): AnsiChar; inline; + +function toLowerCase1251 (const s: AnsiString): AnsiString; // `true` if strings are equal; ignoring case for cp1251 function StrEquCI1251 (const s0, s1: AnsiString): Boolean; @@ -451,7 +453,7 @@ begin end; -function UpCase1251 (ch: Char): Char; +function UpCase1251 (ch: AnsiChar): AnsiChar; inline; begin if ch < #128 then begin @@ -475,7 +477,7 @@ begin end; -function LoCase1251 (ch: Char): Char; +function LoCase1251 (ch: AnsiChar): AnsiChar; inline; begin if ch < #128 then begin @@ -510,6 +512,26 @@ begin end; +function toLowerCase1251 (const s: AnsiString): AnsiString; +var + f: Integer; + ch: AnsiChar; +begin + for ch in s do + begin + if (ch <> LoCase1251(ch)) then + begin + result := ''; + SetLength(result, Length(s)); + for f := 1 to Length(s) do result[f] := LoCase1251(s[f]); + exit; + end; + end; + // nothing to do + result := s; +end; + + // ////////////////////////////////////////////////////////////////////////// // // utils // `ch`: utf8 start