Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
0 / 0 / 1
Регистрация: 27.01.2014
Сообщений: 8

Проверка на совпадение + проверка строки на содержание спец. символов

02.12.2014, 00:18. Показов 6359. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем ситуация такая: есть типизированный файл, форма для добавления пользователей (которые пишутся в файл). Для записи данных использую record. Все записи пишу в динамический массив dataMas. При запуске проги появляется окно аутентификации (логин/пароль). Теперь суть проблемы:
1.
Delphi Скопировано
1
2
3
4
5
6
7
8
9
10
11
   for i := Low(dataMas) to High(dataMas) do begin        
      if (dataMas[i].Name = EditLog.Text) And (dataMas[i].Password = EditPwd.Text) then begin
        if dataMas[i].Name = 'ADMIN' then FAdmin.Show  //открыть админскую форму
          else FUser.Show; //открыть пользовательскую форму
        FAuth.Hide;
        Exit;  
        end
        else begin //если введёного логина в файле нет, выводить ошибку.
            MessageDlg('Invalid login or password!', mtError, [mbOk],0 );
            Exit;
         end;//else
Если нет ветки else, то всё нормально работает (ну т.е. при неправильном логине ничего не происходит, а при совпадении открывается нужная форма). Если ветка else есть, то корректно определяет только первую запись (ADMIN), на остальные выдаёт ошибку. Не пойму в чём дело.

2.
И второй вопрос! Нужно проверить строку на наличие в ней знаков пунктуации и цифр.
Кликните здесь для просмотра всего текста

Delphi Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
procedure TFUser.ButtonOKUClick(Sender: TObject);
var
  Login : String[15];
  Pwd : String[15];
  NewPwd : String[15];
 
  i : Integer;
  n : Integer; //счётчик проверки на ограничения
  ChkSymb :  Boolean; //флаг наличия знаков
  ChkNum : Boolean; //флаг цифр
 
  symb : array of char := ['.',',','-',':',';','!','?','(',')','"'];
  numbers : array of Integer := [0..9]; 
 
begin
  Label1.Hide;
  Login := FAuth.EditLog.Text;
  Pwd := FAuth.EditPwd.Text;
  ChkSymb := False;
  ChkNum := False;
 
  //SetLength(numbers,10);
 
  symb := ['.',',','-',':',';','!','?','(',')','"'];
  numbers := [0..9];
  if (EditOldPwd.Text = Pwd) And (EditNewPwd.Text = EditConPwd.Text) then begin
    for i := Low(dataMas) to High(dataMas) do
      if length(EditNewPwd.Text) < 8 then begin
        MessageDlg('The new password is less then 8 characters', mtError, [mbOk],0 );
        break;
      end;
      if dataMas[i].Name = Login then begin
       
        if dataMas[i].Restrictions = True then begin
          NewPwd := EditNewPwd.Text;
          for n:=1 to length(NewPwd) do begin
            if NewPwd[n] in symb then ChkSymb:=True;
            if NewPwd[n] in numbers then ChkNum:=True;
            if (ChkSymb = False) AND (ChkNum = False) then begin
              MessageDlg('the new password does not match the security policies ',
                mtError, [mbOk],0 );
              beep;
              EditNewPwd.Clear;
              EditConPwd.Clear;
              break;
            end;//if Chk
          end;//for
        end;//if Restrictions
 
      
        dataMas[i].Password := EditNewPwd.Text;
        dataMas[High(dataMas)].ChangePwd := False;
      end;//if


Выдаёт ошибку в строках:
if NewPwd[n] in symb then ChkSymb:=True;
if NewPwd[n] in numbers then ChkNum:=True;
И ругается на массив symb : array of char := ['.',',','-',':',';','!','?','(',')','"'];

Помогите пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.12.2014, 00:18
Ответы с готовыми решениями:

проверка содержимого строки символов
Имеется строка символов. Нужно программным путём определить состоит ли строка из цифр. Подскажите, плз, путь наименьшего сопротивления!

Проверка на совпадение с массивом
Есть какой-то рэндомно заполненный целочисленный массив. Берется он из файла. Есть какое-то рэндомное целое число. Задается ессно...

Проверка в Srtinggrid вводимых данных на совпадение в строке
Всем привет!!! помогите кто чем может) В чём суть, имеется таблица в которой хранится расписание. В строках пары, в столбцах группы, нужно...

2
пофигист широкого профиля
4761 / 3197 / 861
Регистрация: 15.07.2013
Сообщений: 18,544
02.12.2014, 01:20
Цитата Сообщение от falcon178 Посмотреть сообщение
В общем ситуация такая: есть типизированный файл, форма для добавления пользователей (которые пишутся в файл). Для записи данных использую record.
Объявление рекорда в студию.
Цитата Сообщение от falcon178 Посмотреть сообщение
Выдаёт ошибку в строках:
if NewPwd[n] in symb then ChkSymb:=True;
А нафига было качать версию Дельфи Д2009+? Чем любимая всеми учащимися и их преподавателями Д7 не устроила?
0
0 / 0 / 1
Регистрация: 27.01.2014
Сообщений: 8
02.12.2014, 16:47  [ТС]
northener,
Delphi Скопировано
1
2
3
4
5
6
7
8
type
  data = record
  Name : String[15];
  Password : String[15];
  Blocked : Boolean;
  Restrictions : Boolean;
  ChangePwd : Boolean;
end;
Проверка на совпадение + проверка строки на содержание спец. символов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.12.2014, 16:47
Помогаю со студенческими работами здесь

Проверка строки на содержание ложных символов
Я ввожу строковую переменную и мне нужно проверить какие символы она в себе содержит. Если только цифры, то вывести любое сообщение, в...

Проверка строки на содержание определенных символов
К примеру есть строка (&quot;ООО Лампа/Москва&quot;), необходимо проверить содержит ли эта строка определенные символы из массива Dim...

Проверка строки на содержание одинаковых символов
Здравствуйте! Подскажите пожалуйста, с чего начать... Написал программу которая выбирает из файла слова по известным буквам, т.е....

Разбиение строки, и проверка каждой из подстрок на содержание определенных символов
Добрый день, друзья, надеюсь на вашу помощь. string number = (string) txtNumberCep.EditValue; string faset =...

Проверка строки первого массива на содержание символов из строки второго массива
есть два массива по N строк, возможны пустые строки, в данном случае строки генерируются из набора алфавита, как можно сделать тоже самое,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер