Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 68

/ вопрос открыт /

Уважаемые эксперты! В продолжение вопроса №66... Всё получилось сделать, только теперь небольшая проблема. Иногда вместо символов программа получает непечатаемые символы. Обычно они отображаются как узкие прямоугольники, похожие на букву "I", но бОльшей толщины. Собственно вопрос: как проверить - печатный это символ или какой-то служебный? Всё дело в том, что некоторые функции из-за этих символов вылетают с ошибкой... Заранее благодарю.

Dron Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Dron (статус: Студент)
Вопрос отправлен: 28 июня 2006, 17:23
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Yurchik

Здравствуйте, Dron!
В принципе служебные символы имеют коды 0-31. Но тогда получается, что табуляция (#9) - тоже служебный символ.
В твоем случае можно создать множество печатных символов, а потом проверять символ на принадлежность к этому множеству:

type
TPrintSymbs = set of Char;
const
PrintSymbs: TPrintSymbs = ['0'..'9', 'A'..'Z', 'a'..'z', ' ', ...]; // нужно заполнить всеми печатаемыми символами
...
if chr($20) in PrintSymbs then
...

Наверно это не самый оптимальный вариант. Может уже написаны функции, позволяющие делать нужную тебе проверку. Возможно, проще модифицировать твои функции, чтобы они корректно реагировали на любые символы.
Во всяком случае, это рабочий вариант. Удачи!

Ответ отправил: Yurchik (статус: 3-ий класс)
Время отправки: 29 июня 2006, 01:31
Оценка за ответ: 5


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:44
Выполнено за 0.02 сек.