AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.08.2005, 16:13   #7  
Mihon is offline
Mihon
Участник
 
39 / 10 (1) +
Регистрация: 25.03.2005
Цитата:
Сообщение от 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?
В таком случае функция продолжит работать до конца строки. Всё ОК. Но если автор оставит-таки своё 176 (179), то она будет заканчивать работу, натыкаясь на всякие спецсимволы виндовой кодировки, такие как парные кавычки и апострофы.

NB. по-умолчанию (если нет русских букв) строка будет считаться ДОСовской (если True с False, разумеется, местами поменять)
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:35.