Генерация 6-и злачных паролей

значения длиной 6 симлов содержащие символы 0-9 и А-Я

code: #delphi
Sym : Array[0..20] of char;  // Тут массив букв, которые ты используешь... в нашем случае у нас 21 символ
Value : Array[0..5] of byte;  // Тут значение очередного пароля в виде номеров символов... пароль из 6 символов

Функция перебора:

code: #delphi
Function GetNextValue : Boolean;
Var I : Integer;
Begin
  Value[5] := Value[5] + 1;  // Увеличиваем последнюю букву
// Проверяем, на переполнения... если больше 20 (а у нас Sym состоит из 0..20 символов), то увеличиваем следующий разряд
  For I := 4 downto 0 do
  Begin
    If Value[I+1]>20 then
    Begin
      Value[I] := Value[I] + 1;
      Value[I+1] := 0;
    End;
  End;
// Проверяем самый старший разряд на переполнение... если переполнен, значит все значения перебрали.
  If Value[0]>20 then Result := False else Result := True;
// Значит, функция вернет True, если очередное значение было получено... и вернет False, если уже перебрали все значения
End;

Но в начале нужно заполнить переменную Sym и обнулить Value

code: #delphi
Var I : Integer;
    S : String[6];
Begin
  For I := 0 to 9 do Sym[I] := Ord('0')+I;  // Значения с 0 по 9 - это будут цифры '0'..'9'
  For I := 10 to 20 do Sym[I] := Ord('A')+I-10; // Остальные значения начнем с заглавной латинской буквы 'A' и т.д.
// Таким образом мы заполнили массив Sym значениями '0','1','2'....'8','9','A',B','C'.... значит и перебирать будем эти символы
  For I := 0 to 5 do Value[I] := 0; // Обнулили массив Value
 
// А теперь начинаем перебирать
  Repeat
    For I := 0 to 5 do S[I] := Sym[Value[I]];  // Переводим из числового вида массива Value в строку из символов S
    // Сейчас S и содержат нужную нам очередную строку... не знаю, что ты с ней хочешь делать... например, выведем ее в TLabel
    Label1.Caption := S;
    Label1.Refresh;
  Until not GetNextValue;
End;

Вот общий принцип... возможно и не будет работать (я не проверял)... но плясать можно от этого.

автор: Humanoid

Поделиться:

Похожие статьи: