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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2015, 11:54   #1
garuna
Форумчанин
 
Аватар для garuna
 
Регистрация: 13.04.2013
Сообщений: 180
Вопрос Что нужно исправить чтобы не вылетал Warning?

Добрый день! Переношу проект с Delphi 7 на Delphi XE
В программе есть функция, которая определяет есть ли в строке запрещенные символы:

Код:
function AllowedSet(const s: String): Boolean;
var i, len: Integer;
begin
 len:= Length(s);
 Result := True;
 for i := 1 to len do
 if (not (s[i] in ['0'..'9'])) and (not (s[i] in ['A'..'Z'])) and (s[i] <> '-') and (s[i] <> ' ') then
 begin
  Result := False;
  Break;
 end;
end;
Всё хорошо, но при компиляции выпадает Warning:
Цитата:
[DCC Warning] Unit1.pas(1364): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
Подскажите, как нужно правильно переписать функцию чтобы без всяких warning?

Последний раз редактировалось garuna; 20.06.2015 в 11:57.
garuna вне форума Ответить с цитированием
Старый 20.06.2015, 14:43   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
function AllowedSet(const s: String): Boolean;
var
  i, len: Integer;
begin
  len := Length(s);
  Result := True;
  for i := 1 to len do
  begin
    if (not (CharInSet(s[i], ['0'..'9']))) and (not (CharInSet(s[i], ['A'..'Z']))) and (s[i] <> '-') and (s[i] <> ' ') then
    begin
      Result := False;
      Break;
    end;
  end;
end;
Shouldercannon вне форума Ответить с цитированием
Старый 20.06.2015, 18:51   #3
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Один быдлокод заменили другим быдлокодом.
Vapaamies вне форума Ответить с цитированием
Старый 20.06.2015, 19:10   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
с Delphi 7 на Delphi XE
Рекомендую использовать регулярные выражения, если конечно эта функция не участвует с тяжелой обработке данных.
А вообще
Код:
if (not s[i] in ['0'..'9','A'..'Z','-',' '] then
гораздо удобнее был бы в данной ситуации.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.06.2015, 20:40   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А чего бы так не сделать в д7
Код:
function AllowedSet(const s: String; ValidChars: TSysCharSet): Boolean;
var i: Integer;
begin
  Result := False;
  for i := 1 to Length(s) do if not (s[i] in ValidChars) then Exit;
  Result := True;
end;
И обращение:
Код:
if not AllowedSet(s,['0'..'9','A'..'Z','-',' ']) then ...
И в XE с таким же обращением:
Код:
function AllowedSet(const s: String; ValidChars: TSysCharSet): Boolean;
var i: Integer;
begin
  Result := False;
  for i := 1 to Length(s) do if not CharInSet(s[i],ValidChars) then Exit;
  Result := True;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пишу секундомер,проблема в том,что он неккоректно переводит минуты в часы.Что нужно исправить чтобы он правильно переводил минуты Luchfan12 C++ Builder 7 23.10.2014 12:54
Нужно исправить программу чтобы она использовала lenght serg.malkow2014 Помощь студентам 1 27.12.2013 11:07
Warning 1 warning C4996: 'scanf': This function or variable may be unsafe. Что это за баг такой? ( С ) dannae Помощь студентам 10 08.10.2013 16:49
что нужно исправить в запросе deni1982 PHP 0 15.02.2011 14:24
что нужно чтобы написать вирус? JOFRIF Свободное общение 24 21.10.2008 01:38