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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2009, 00:51   #1
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию сравнение строк -?

Код:
procedure TForm1.ButtonClick(Sender: TObject);
begin
if Edit1.Text='password' then
Edit2.Text:='Пароль верный'
else
Edit2.Text:='Неверно';
end;
Этот код работает следующим образом: если в edit1 и edit2 введени значения 12,34,56 и 12,34,56, значит все правильно, пароль верный. В любом другом случае, пароль неверный.
И значит вот какой вопрос: как бы сделать так чтобы, если мы вводим часть правильного значения, например 12,34 или 12 или 34 или 12,56 то пароль тоже был бы верным?
То есть программа как бы проверяет, если введенный фрагмент присутствует в кодовом слове, значит все в порядке, иначе неверно (например 21 или 12,43)

Последний раз редактировалось Evgenii; 15.07.2009 в 00:59.
Evgenii вне форума Ответить с цитированием
Старый 15.07.2009, 01:05   #2
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Смотри Pos. Разбивай введенную строку на значения и смотри вхождение данного значения в пароль. Если все введенные значения входят, тогда давай допуск.

Последний раз редактировалось Evgeniy26; 15.07.2009 в 01:23.
Evgeniy26 вне форума Ответить с цитированием
Старый 15.07.2009, 01:09   #3
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

что такое Pos? и где его смотреть?
Evgenii вне форума Ответить с цитированием
Старый 15.07.2009, 01:16   #4
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Pos и PosEx(StrUtils) - функции поиска подстроки в строке. Поиск.
Evgeniy26 вне форума Ответить с цитированием
Старый 15.07.2009, 01:16   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

if Pos(Edit1.text,'12,34,56')<>0 then //значит часть строки '12,34,56' присутствует в Эдите
а вообще Pos, выделить его, и нажать F1
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.07.2009, 01:21   #6
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

а если сравниваются значения в 2х ячейках dbedita?
Evgenii вне форума Ответить с цитированием
Старый 15.07.2009, 01:58   #7
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Вот пример, но его еще дорабатывать надо. Например: если пароль 56,66,55 и ввели 56,55,55 он даст труе, придумай подсчет повторений. Или пароль тоже разбивай и подсчитывай значения.
Код:
var
  index, i: Integer;
  IsPassword: String;
  Digit: array of String;
begin
  IsPassword := Edit1.Text;
  if Length(IsPassword) = 0 then
    exit;
  SetLength(Digit, 0);
  index := 1;
  while PosEx(',', IsPassword,  index) > 0 do
  begin
    SetLength(Digit, Length(Digit) + 1);
    Digit[High(Digit)] := Copy(IsPassword, index,
    PosEx(',', IsPassword,  index) - index);
    index := PosEx(',', IsPassword,  index) + 1;
  end;
  SetLength(Digit, Length(Digit) + 1);
  Digit[High(Digit)] := Copy(IsPassword, index, Length(IsPassword));
  index := 0;
  for i := 0 to High(Digit) do
    if Pos(Digit[i], Edit2.Text) > 0 then
      Inc(index);
  if index = Length(Digit) then
    Caption := 'Yes'
      else
        Caption := 'No';
Думаю идея понятна.

Последний раз редактировалось Evgeniy26; 15.07.2009 в 02:21.
Evgeniy26 вне форума Ответить с цитированием
Старый 15.07.2009, 02:19   #8
Evgenii
Форумчанин
 
Аватар для Evgenii
 
Регистрация: 04.01.2008
Сообщений: 201
По умолчанию

попробую разобраться. спасибо
Evgenii вне форума Ответить с цитированием
Старый 15.07.2009, 04:07   #9
QunneD
C++ &amp;amp; PHP &amp;amp; Asm
Форумчанин
 
Аватар для QunneD
 
Регистрация: 06.12.2008
Сообщений: 300
По умолчанию

Код:
var
  i, k : integer;
  s : string;
begin
  s := edit1.text;
  k := 0;

  i := pos('12', s);
  if i > 0 then begin k := k+1; end else begin k := k-1; end;
  i := pos('34', s);
  if i > 0 then begin k := k+1; end else begin k := k-1; end;
  i := pos('56', s);
  if i > 0 then begin k := k+1; end else begin k := k-1 end;

  if k > 0 then
  showmessage('пароль правильный')
  else
  showmessage('пароль неправильный')
end;
QunneD вне форума Ответить с цитированием
Старый 15.07.2009, 08:04   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если введенный фрагмент присутствует в кодовом слове, значит все в порядке
Дык что ж это за пароль, который можно подобрать за десять (ато и меньше) ходов?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++. Сравнение строк maxlav Помощь студентам 8 25.06.2009 04:33
Сравнение строк, ввод пароля (assembler) You_must_help Помощь студентам 7 19.04.2009 23:53
Сравнение строк Elm0 Паскаль, Turbo Pascal, PascalABC.NET 2 02.06.2008 09:31
нужна помощь, сравнение строк в Си 3.1 feranic Помощь студентам 5 24.04.2008 17:57
Сравнение строк HOMER Общие вопросы Delphi 7 04.01.2008 05:53