Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2008, 11:20   #1
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
Восклицание W1050 WideChar reduced to byte char in set expressions. Что делать?

Добрый день!

Получаю после компилирования проекта предупреждение "W1050 WideChar reduced to byte char in set expressions"

В проекте ссылаюсь на:

if not (ws[i] in StandardDelimiters) then
то то и то то ................................... ......

где ws : WideString; а StandardDelimiters:

type
TDelimiter = set of #32..#255;
{* Delimiters - список символов являющихся разделителями слов, например, такие как пробел, !, ? и т.д. *}
StandardDelimiters : TDelimiter = ['~', '!', '@', '#', '$', '%', '^', '&',
'*', '(', ')', '_', '+', ':', '"', '<',
'>', '?', '{', '}', '`', '-', '=', '\',
'|', '/', ';', ',', '.', '[', ']', '«',
'»', '№', '1', '2', '3', '4', '5', '6',
'7', '8', '9', '0', '''', #32];

Как можно записать выражение "if not (ws[i] in StandardDelimiters) then" иначе, чтобы снять предупреждение?
Мне нужна именно такая структора кода.
Спасибо всем!
SkAndrew вне форума Ответить с цитированием
Старый 31.10.2008, 11:48   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Дополнительное сравнение и явное приведение:

if not ((ws[i] < #255) and (char(ws[i]) in StandardDelimiters))
then
alexBlack вне форума Ответить с цитированием
Старый 31.10.2008, 21:29   #3
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
По умолчанию

Спасибо за ответ Один небольшой дополнительный вопрос только:

А почему в первой части выражения "if not ((ws[i] < #255) and (char(ws[i]) in StandardDelimiters)) then" прописано "ws[i] < #255"? Ведь "ws[i]" может также равняться и "#255". Тогда может правильнее будет так: "if not ((ws[i] <= #255) and (char(ws[i]) in StandardDelimiters)) then". Если я не прав. пожалуйста, объясните почему. Спасибо за помощь!
SkAndrew вне форума Ответить с цитированием
Старый 01.11.2008, 07:51   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Вы правы, но в данном случае это ничего не меняет, т.к. в StandardDelimiters нет символов с кодом 255
alexBlack вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Флешка зависла, что делать? Сергей Капустин Безопасность, Шифрование 7 01.11.2008 00:49
Что делать? mujbIk Общие вопросы C/C++ 6 27.08.2008 12:24
НЕЗНАЮ ЧТО ДЕЛАТЬ!! grob77 Компьютерное железо 3 11.07.2008 11:53
подскажите что делать. __k1ll3r__ Компьютерное железо 4 23.02.2008 12:54
Накосячил..что делать???(( vip131 Свободное общение 2 07.02.2008 07:42