Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Генераций ПИН-кодов


Автор: _Ramzes_ 3.4.2007, 15:42
Здравствуйте!
Подскажите пожалуйста, как можно сгенерировать  серию и случайный ПИН-код с следующими условиями:
Файл данных  –  файл, в котором хранятся все ранее сгенерированные pin-коды 
Файл сессии   –  файл, в котором хранятся pin-коды только одного сеанса
Серия – не повторяющаяся последовательность цифр, предназначенная для установления соответствия аппаратного комплекса Multicode набору  pin-кодов и имеющая следующий вид:  
Количество цифр: 5
Формат: Smnnnn
Диапазоны: mЄ[1;9], nЄ[0;9] то есть m≠0, S-символ
Исключения: нет
Генерация: каждый последующий номер серии получается увеличением на единицу  предыдущего

Pin-код – последовательность цифр для аварийного запуска системы при утрате транспондерной метки, имеющий следующий вид:
Количество цифр: 5
Формат: mmmmm
Диапазоны: mЄ[0;9]
Исключения: последовательности из всех одинаковых цифр, последовательность вида 12345
Генерация: алгоритм генерации случайных чисел

При обнаружении одинаковых номеров серий необходимо выводить сообщение об ошибке. Да ,и самое главное, - это где это хранить?

Заранее спасибо
проект горит

Автор: _hunter 3.4.2007, 16:05
и что конкретно тебе не понятно? с чем помогать?
или тебе работающий исходник нужен? -- так это не в этот раздел...

Автор: _Ramzes_ 3.4.2007, 16:52
мне не понятно-как генерировать пин-коды в случайном порядке. и проверять уже созданные через базу

Автор: _hunter 3.4.2007, 17:01
для генерации пинов используй функцию Random
а зачем проверять через базу? -- у тебя же они в файле хранятся...

Автор: _Ramzes_ 3.4.2007, 20:02
Вы могли бы привести пример того, как сгенерировать пин-код с помощью Random и как проверить в файле - есть этот пин или нет?

Автор: Alkash 4.4.2007, 08:32
Код

function rnd():string;
var
    d, i: integer;
    s: string;
begin
randomize;
s:='';
for i:=1 to 6 do
  begin
    d:=Random(9);
    s:=s+IntToStr(d);
  end;
Result:=s;
end;

Примерно так генеришь случайное число, как сгенерировал - записываешь результат в переменную, дальше циклом пробегаешься по количеству записей в базе, и сравниваешь значения.......

Автор: gambit 4.4.2007, 11:18
Я не думал над этим вопросом,потому оспаривать ничего не буду, но мне кажется что вариант
Alkash, не очень коректен, так как основная часть времени работы проги будет уходить на поиск пина в базе, а после каждого прохода база становится больше, и шанс на то что данный пин уже есть орже возрастает, а значит прога прошла цикл зря.
Прошу прощения за  smile , и повторюсь что это только мое мнение, и я бы так не поступил.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)