|
|
#7 |
|
Участник
|
Цитата:
Сообщение от tyrex
Win-строка АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ представляет собой в DOS-кодировке символы псевдографики (а также возможно букву "и").
Поэтому приходим к такому алгоритму: 1. Считываем строку, предполагая что она представлена в виде DOS-кодировки. 2. Преобразуем ее в UpperCase чтобы ограничить диапазон симвопов для проверки. 2. Перебираем символы этой строки. 3. Если код символа оказывается >=179 (символ начала последовательности псевдографики), то входная строка представлена в виде Win-кодировки. <div class='CALtop'>C/AL</div><div class='CAL'>IsDosEncoding(InStr: Text): Boolean BEGIN FOR i:=1 TO LENGTH(InStr) DO IF (InStr[i] in 176..223) THEN EXIT(TRUE); EXIT(FALSE); END;</div> В тексте 179, в сырцах - 176... А на самом деле виндовые большие буквы начинаются, как я уже писал выше, с 0xC0h, т.е. со 192. К тому, же опущен сам апкейс. И перепутаны True и False, исходя из названия функции.Цитата:
Сообщение от SVG
А если у нас там запятая, тире, точка, цифра, etc?
NB. по-умолчанию (если нет русских букв) строка будет считаться ДОСовской (если True с False, разумеется, местами поменять) |
|
|