Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/23: Рейтинг темы: голосов - 23, средняя оценка - 4.87
 Аватар для Lero4ka58
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 34

Пароль на вход

26.05.2011, 21:23. Показов 5171. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, подскажите, я у вас на форуме видела процедурку для создания пароля на вход в программу через INI-файл, но видим тот, кто её написал, там очень хорошо напутал, и она не работает. Как всё-таки можно организовать пароль? Конечно,хранение в этом файле небезопасно, но всё-таки. Если кто знает, подскажите,очень нужно)))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2011, 21:23
Ответы с готовыми решениями:

Пароль на вход своей программы в Delphi не через INI-файл
Помогите пожалуйста правильно сделать логин и пароль для входа в программу, вот код: procedure TPasswordDlg.FormCloseQuery(Sender:...

каким образом можно поставить пароль на вход в программу
Уважаемые программисты, доброго времени суток. Подскажите каким образом можно поставить пароль на вход в программу и затем изменять его в...

Если введен верный пароль, то открывается вторая форма с рисунком, если нет, то пароль запрашивается снова
2. Создайте форму со строкой для ввода пароля и кнопкой «Ок». Если введен верный пароль, то открывается вторая форма с рисунком, если нет,...

50
 Аватар для Lero4ka58
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 34
27.05.2011, 08:51  [ТС]
Студворк — интернет-сервис помощи студентам
Не знаю, у меня так, как я сказала. Вот процедурка на кнопке:
procedure TForm2.N1Click(Sender: TObject);
begin
Application.CreateForm(TForm1, Form1);
end;
Получается же, что он снова её создаст. А OnShow не прокатывает
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
27.05.2011, 09:49
Получается же, что он снова её создаст
получается так. А зачем ты так написала?

Ты лучше изложи какой результат ты хочешь в итоге, тогда больше шансов получить дельный совет
0
 Аватар для Lero4ka58
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 34
27.05.2011, 11:37  [ТС]
Если не писать Create, то не работает, я с этого и начинала делать. Если вкратце, то хотелось бы, чтобы если форма(находящаяся внутри главной формы-контейнера) уже открыта, но находится в свернутом виде, то чтобы при попытке снова нажать на кнопку меню,где она по идее должна открываться,была проверка того, а может такая форма уже существует, и не надо её второй раз создавать. Надеюсь, вы поймёте, что я имела в виду)))
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
27.05.2011, 11:42
Ну флаг какой-нибудь организовать, при создании окна - активируется флаг, и если флаг активен, нельзя создать никакой формы больше, если неактивен - то создавать можно
Единственно что в голову пришло
0
 Аватар для Lero4ka58
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 34
27.05.2011, 11:46  [ТС]
А как это можно сделать? Под флагом вы имеете в виду CheckBox? Или что-то другое?
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.05.2011, 11:50
Если Вы выбрали MDI, то Вам необходимо понять как работает этот тип интерфейса, т.к. он сильно отличается от Normal главным образом тем, что все сообщения "дочкам" передаются не напрямую, а через т.н. "клиентскую область главного окна". Поэтому "дочку" нельзя открыть модально или например поверх всех онон (StayOnTop) (в принципе и то, и другое можно эмулировать кодом, но это весьма непросто, поверьте)

Создание формы (в т.ч. дочерней) может выполняться :
1) Статически.
При запуске приложения (если форма в списке автосоздаваемых - см.Delphi->Project->Options->закладка Forms(левый список) форма создается один раз и уничтожается по завершению приложения перед уничтожением гл.формы.
Закрытие формы не приводит к ее уничтожению и для того, чтобы снова открыть ее, достаточно просто дать Show - при этом все поля формы сохраняют значения, присвоенные им в предыдущем показе (например эдиты, чекбоксы и т.д.).
Плюс таких форм в том, что они быстро открываются повторно (даже если содержат "медленнные" данные, например объемные сетки со справочниками, полученными от сервера) и опять же сохраняют информацию, введенную в прошлый раз.
Минус - занимаемая память, ведь форма может вообще не понадобиться, однако она создается и возможно даже что-то выполняет при создании (например запускает запрос на выборку и ожидает передачи сервером результсета), т.е. ненужные тормоза. Это четко видно на примере программ, что-то интенсивно грузящих при вызове (типа 1С), что особенно неприятно если Вы случайно или по неведению нажали на иконку, а теперь вынуждены ждать завершения всех этих загрузок чтлюы сразу сказать ей "до свидания" Также "фоновые" формы с открытыми наборами данных могут давать лишнюю нагрузку скл-серверу, поддерживающему соотв.открытое соединение (а в случае серверного курсора - конкретно подзагрузить сервер лишней работой)

2) Динамически
В дизайне форма переносится из левого списка в правый, тем самым исключая ее из автоматически создаваемых при запуске программы. Чтобы форма появилась на экране, нужно ее сначала создать. Например по кнопке "Добавить запись" гл.форма создает и вызывает форму для ввода новой записи:

procedure TForm1.Button1Click(Sender: TObject);
begin
with TFormAddRecord.Cteate(Self) do
begin
ShowModal;
Free; // Если форма не самоубивающаяся (Action<>caFree в OnClose)
end;
end;

Плюс - форма не "тянет" лишнего, отчего экзешник проекта "легче" и грузится быстрее. В приложении с десятками, а то и сотнями)форм эффект динамических форм очень заметен в лучшую сторону.

Минусы - проблемы с сохранением "прошлых" данных, поэтому если данные надо сохранять, форму стОит сделать авто и постоянно живущей, либо сохранять данные где-то в другом месте. Также к минусам можно относить некоторые "тормоза", связанные с созданием и инициализации формы (как в случае с тем же открытием справочника)
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
27.05.2011, 11:55
булеву переменную например использовать, да хоть что-то другое, скажем при создании формы, делаем переменную в True, далее где-то теперь если True тогда нельзя создать больше, если False то разрешено создать
0
 Аватар для Lero4ka58
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 34
27.05.2011, 11:57  [ТС]
Это всё очень полезно, спасибо,но все равно немножко не то, чего я хотела. В принципе с MDI я разобралась, формы все какие нужно из одного списка в другой перенесла, все работает прекрасно кроме этой маленькой неприятности с дубликатом. Так все-таки можно эту проверку организовать каким-нибудь образом?

Добавлено через 1 минуту
Сейчас попробую с переменной)))
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.05.2011, 12:00
Никаких флагов не нужно. Форма-мама (MDIForm) всегда может просмотреть все "живые" (в смысле созданные) дочки через св-ва MDIChildCount и MDIChildren[] и, если нужная по контексту уже имеется, то активировать ее с помощью ActiveMDIChild.
Например


implementation

uses UnitAddRecord..

...

var
frmAddRec: TFormAddRecord;

frmAddRec := nil;
for i = 0 to MDIChildCount-1 do
if MDIChildren[i] is TFormAddRecord then
begin
frmAddRec := TFormAddRecord(MDIChildren[i]);
break;
end;
if not assigned(frmAddRec) then
frmAddRec := TFormAddRecord.Create(Self);
ActiveMDIChild := frmAddRec;
0
 Аватар для Lero4ka58
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 34
27.05.2011, 12:06  [ТС]
Спасибо большое))) Но не пригодилось, до меня дошло. Я просто при открытии этой формы поставила Form2.N1.Enabled:=false, а при закрытии true, и работает)))
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.05.2011, 12:07
Вообще MDI обладает одним замечательным свойством - она непросредственно управляет всеми "дочками", причем первой получает сигналы о событиях в дочках, раньше их самих ! Это позволяет вынести за "скобки" весь функционал дочек, сконцетнровав его непосредственно вглавной форме.
При этом, получая сообщения (например, нажата кнопка), мама может даже не заморачиваться КАКОЙ именно дочке оно адресовано, просто передвая его активной !.

Вот пример.

Есть 5 дочек с разными гридами. Пользователь жмет кнопку на гл.форме "Сортировать". Мама просто посылает соотв.сообщение (как работать с сообщениями в делфи см.отдельно) активной дочке, которая уже и выполняет упорядочение датасета по текущему столбцу. Либо сама мама и выполняет сортировку датасета, получая указатель на него из активного грида активной дочки !

МДИ-интерфейс очень мобилен, красиво программируем и хорошо оптимизируется. Однако имеет и недостатки (к сожалению)
0
 Аватар для Lero4ka58
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 34
27.05.2011, 12:11  [ТС]
Да,недостатки конечно есть, но мне такой интерфейс приглянулся, решила делать в нем))
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.05.2011, 12:19
Тогда все управление дочкамим - на мамку !
В дочках только popupmenu, ну и обязательно все управление через TActionList(Actions) + TImageList

Добавлено через 40 секунд
Наглядный пример - Image Editor делфишный
0
 Аватар для Lero4ka58
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 34
27.05.2011, 12:20  [ТС]
Еще вопрос))В отчёте в одном из столбцов формирую строчку из нескольких столбцов таблицы. Конкретнее: есть таблица Преподаватели, и у каждого из них предметы, которые он может вести,например, высшая математика, дискретная математика, физика и др. Вот значит, в отчете мне нужно в одном поле через запятую вывести эти поля, при этом беру только три первых(по степени важности), но,если этот преподаватель ведет только 2 предмета, то третьим он ставит опять же первый. Подскажите, как сделать проверку, чтобы одинаковые названия он не брал
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.05.2011, 12:57
При формировании перечня "в строчку" пользуйтесь списком и поиском:

var
i: integer;
ls: TStrings;
s: string;

ls := TStringList.Create;
for i := LOW(arPreds) to HIGH(arPreds) do // допустим перечень предметов в массиве строк
if ls.IndexOf(arPreds[i])<0 then ls.Add(arPreds[i]);
for i := 0 to ls.Count-1 do
s := s+ls[i]+', ';
ls.Free;
Delete(s,Length(s)-1,2);
Edit1.Text := s;

Добавлено через 2 минуты
хм.. вообще-то можно и без списков:

for i := LOW(arPreds) to HIGH(arPreds) do // допустим перечень предметов в массиве строк
if Pos(arPreds[i],s)<0 then s := s+arPreds[i]+', ');
if Length(s)>1 then Delete(s,Length(s)-1,2);
Edit1.Text := s;
1
 Аватар для Lero4ka58
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 34
27.05.2011, 13:25  [ТС]
Спасибо,попробую)))надеюсь, что получится)))
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.05.2011, 14:55
У такой, как на аватарке, не может не получиться !
0
 Аватар для Lero4ka58
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 34
27.05.2011, 21:34  [ТС]
Спасибо))) Буду стараться)))
0
 Аватар для Lero4ka58
0 / 0 / 0
Регистрация: 26.05.2011
Сообщений: 34
29.05.2011, 14:38  [ТС]
А можно ли как-нибудь из ini-файла все записанные данные в виде таблицы отобразить в приложении,допустим, в DBGride?
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
29.05.2011, 14:42
а зачем в дб гриде? ну в стринггрид вывести можно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.05.2011, 14:42
Помогаю со студенческими работами здесь

Пароль на программу (пароль из файла)
Добрый день, опять вопрос. Есть кнопка, &quot;Поставить пароль на программу&quot; (пароль берется из эдита) Вот ее обработчик: procedure...

Передать серверу логин и пароль для авторитизации, но пароль нужно передать в md5
Нужно передать серверу логин и пароль для авторитизации, но пароль нужно передать в md5. Но у меня передаваемое md5 отличается от md5...

Если есть пароль от почты и пароль от панели управления хоста, можно восстановить вход в админку?
если есть пароль от почты и пароль от панели управления хоста, можно восстановить вход в админку?

пароль на вход
Поставил пароль на вход на самсунг n 110, и при входе выдаёт &quot;invalid password&quot; Нельзя загрузить винду и войти в биос. Что можно...

Вход в БД + Пароль
Всем здравствия и Благополучия! Чёй та взбрело в мою неугомонную голову попытать силы в создании БД с правами доступа и паролями при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru