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

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

26.05.2011, 21:23. Показов 5250. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru