Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание пароля для приложения 
:(
    Опции темы
Костя039
  Дата 27.4.2012, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 27.4.2012

Репутация: нет
Всего: нет



Помогите кто может! вообще сооброзить не могу как делать smile 
нужно создать аутентификационую  форму, без логина: "Простой пароль не короче 7 символов, в котором не должно быть повторяющихся символов. Через 6 дней программа предлагает изменить пароль. Если пароль длинее 10 символов, при запуске системная дата меняеться на день назад!"
PM MAIL   Вверх
Данкинг
Дата 27.4.2012, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



И что именно непонятно? В одном предложении масса вопросов, и все на разные темы.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Костя039
Дата 27.4.2012, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 27.4.2012

Репутация: нет
Всего: нет



Цитата(Данкинг @ 27.4.2012,  10:19)
И что именно непонятно? В одном предложении масса вопросов, и все на разные темы.

1.как прописать что бы в пароле небыло повторяющихся символов?
2.что бы при не верном вводе пароля длиной больше 10 символов менялась системная дата на день назад?
PM MAIL   Вверх
Данкинг
Дата 27.4.2012, 10:44 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



1. 
Код

ok:=true;
for i:=1 to length(stroka) do
 for ii:=1 to length(stroka) do
 if stroka[ii]=stroka[i] and i<>ii then
  ok:=false;
if not ok then ShowMessage ('Ни один символ пароля не должен дублироваться!');


2. ИМХО обычный ДОСовский DATE, запускаемый через ShellExecute, подойдёт. Хотя тут ещё от прав пользователя в винде зависит.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Костя039
Дата 27.4.2012, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 27.4.2012

Репутация: нет
Всего: нет



Цитата(Данкинг @ 27.4.2012,  10:44)
1. 
Код

ok:=true;
for i:=1 to length(stroka) do
 for ii:=1 to length(stroka) do
 if stroka[ii]=stroka[i] and i<>ii then
  ok:=false;
if not ok then ShowMessage ('Ни один символ пароля не должен дублироваться!');


2. ИМХО обычный ДОСовский DATE, запускаемый через ShellExecute, подойдёт. Хотя тут ещё от прав пользователя в винде зависит.

1. можно чуть подробнее? smile 
PM MAIL   Вверх
Данкинг
Дата 27.4.2012, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Костя039, что именно подробнее? Цикл непонятен?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Костя039
Дата 27.4.2012, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 27.4.2012

Репутация: нет
Всего: нет



Цитата(Данкинг @ 27.4.2012,  11:49)
Костя039, что именно подробнее? Цикл непонятен?

да именно он!(
PM MAIL   Вверх
Данкинг
Дата 27.4.2012, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Проходим по каждому символу строки, запоминая его и сравнивая с символами во втором цикле. Если символы равны и это не один и тот же символ, то булевой переменной приравниваем false. 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
XperT
Дата 27.4.2012, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 19.8.2006

Репутация: нет
Всего: 4



Кстати код можно оптимизировать следущим образом:
Код

ok := true;
for i := 1 to length(stroka) do
    for ii := i + 1 to length(stroka) do
    if stroka[ii] = stroka[i] then
        ok := false;
        
if not ok then ShowMessage ('Ни один символ пароля не должен дублироваться!');


Выигрыш в скорости для мелких строк никакой, но лучше сразу приучать писать оптимизированные алгоритмы, тем более, что в данном случае меньше проверок и читабельность кода выше.
PM MAIL   Вверх
MetalFan
Дата 27.4.2012, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(XperT @  27.4.2012,  16:17 Найти цитируемый пост)
код можно оптимизировать следущим образом

А можно еще и после присвоения false из циклов вывалиться. Зачем их дальше гонять?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Keeper89
Дата 27.4.2012, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



Код

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  System.Generics.Collections;

function IsUnique(const Str: string): Boolean;
var
  Dict: TDictionary<Char, Boolean>;
  a: Char;
begin
  Result := True;

  Dict := TDictionary<Char, Boolean>.Create;
  try
    for a in Str do
    begin
      if Dict.ContainsKey(a) then
        Exit(False);
      Dict.Add(a, True);
    end;
  finally
    FreeAndNil(Dict);
  end;

end;

var
  s: string;

begin
  Readln(s);
  writeln(IsUnique(s));
end.


Это сообщение отредактировал(а) Keeper89 - 27.4.2012, 19:00


--------------------
PM MAIL WWW   Вверх
XperT
Дата 27.4.2012, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 19.8.2006

Репутация: нет
Всего: 4



Цитата(MetalFan @ 27.4.2012,  17:17)
Цитата(XperT @  27.4.2012,  16:17 Найти цитируемый пост)
код можно оптимизировать следущим образом

А можно еще и после присвоения false из циклов вывалиться. Зачем их дальше гонять?

Да, я тоже думал над этим, но для строк в немного больше десятка символов это не сыграет роли,а нужно как минимум один break добавить, плюс в первом цикле проверку и break. В общем, я подумал, что займусь только упрощением кода, хотя по правде говоря, сам бы не побрезговал добавить break для такой, пусть и мелкой, но оптимизации. По опыту знаю, что то, что сейчас кажется мелочью, в будущем может перерасти во что-то очень большое и даже маленькие недочеты серьезно влияют на скорость работы программы.
PM MAIL   Вверх
Keeper89
Дата 28.4.2012, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 9
Всего: 58



 
Цитата(XperT @  27.4.2012,  21:48 Найти цитируемый пост)
По опыту знаю, что то, что сейчас кажется мелочью, в будущем может перерасти во что-то очень большое и даже маленькие недочеты серьезно влияют на скорость работы программы. 

Тогда присмотрись к моему варианту - O(n) и O(n^2) - очень разные вещи.


--------------------
PM MAIL WWW   Вверх
XperT
Дата 30.4.2012, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 19.8.2006

Репутация: нет
Всего: 4



Цитата(Keeper89 @ 28.4.2012,  00:22)
Цитата(XperT @  27.4.2012,  21:48 Найти цитируемый пост)
По опыту знаю, что то, что сейчас кажется мелочью, в будущем может перерасти во что-то очень большое и даже маленькие недочеты серьезно влияют на скорость работы программы. 

Тогда присмотрись к моему варианту - O(n) и O(n^2) - очень разные вещи.

Там не совсем O(n), так как поиск в словаре это всё равно не одна итерация, но не спорю, быстрее будет. Только не понятно зачем использовать словарь, если не используем его по назначению, не лучше бы было использовать сортированный список с бинарным поиском?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0990 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.