Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #31  
Старый 11.03.2012, 14:20
UchusNaDelhi7 UchusNaDelhi7 вне форума
Прохожий
 
Регистрация: 07.03.2012
Сообщения: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Вот не нравятся мне такие решения. А если надо 3 или 12 символов проверять? Весь код переписывать на 12 циклов? Может так интереснее будет?

Код:
Const
  CharSet: String = 'abcdefghijklmnopqrstuvxwz';
procedure PassGen(Pass: String; Depth: Integer);
Var
  i: Integer;
begin
 for i := 1 to Length(CharSet)
 do begin
    Pass[Depth] := CharSet[i];
    if Depth < Length(Pass)
    then PassGen(Pass, Depth + 1)
    else Memo1.Lines.Add(Pass);
    end;
end;

begin
 PassGen('123456', 1);
end;

Спасибо за код , если можно поясните принцип работы . А на счет ждать : для 9-значного " пароля " время перебора составит примерно 32 года , для 12-значного около 1 505 615 лет ( это если 36 символов : Англ.буквы одного регистра и цифры ) .
Ответить с цитированием
  #32  
Старый 11.03.2012, 15:53
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Принцип очень простой. Используется рекурсия, т.е. вызов процедуры самой-себя. Для анализа работы рекомендую задать для CharSet значение '01' и вызвать процедуру так:
PassGen('00', 1);
и в режиме отладки пошагово посмотреть что происходит.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
UchusNaDelhi7 (18.03.2012)
  #33  
Старый 17.03.2012, 23:15
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
По умолчанию Зачем такой изврат?

Если тупо лоб в лоб, то
Код:
procedure TForm1.Button1Click(Sender: TObject);
var s1,s2,s3,s4,s5,s6,s7,s8: char;
begin
for s1:='a' to 'z' do
  for s2:='a' to 'z' do
    for s3:='a' to 'z' do
      for s4:='a' to 'z' do
        for s5:='a' to 'z' do
          for s6:='a' to 'z' do
            for s7:='a' to 'z' do
              for s8:='a' to 'z' do
Memo1.Lines.Add(S1+S2+S3+S4+S5+S6+S7+S8);
end;

А реально имеетсмысл смотреть в сторону рекурсии

Последний раз редактировалось Cheetos, 17.03.2012 в 23:18.
Ответить с цитированием
Этот пользователь сказал Спасибо Cheetos за это полезное сообщение:
UchusNaDelhi7 (18.03.2012)
  #34  
Старый 18.03.2012, 00:01
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
По умолчанию

Пардон, не заметил
Ответить с цитированием
  #35  
Старый 18.03.2012, 21:18
UchusNaDelhi7 UchusNaDelhi7 вне форума
Прохожий
 
Регистрация: 07.03.2012
Сообщения: 15
Репутация: 10
По умолчанию

Ознакомился с массивами , const ... Всем огромное спасибо !
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:45.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter