Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
1

Программа защитник данных - где хранить пароль

24.04.2014, 16:05. Показов 1291. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, я почти сделал программу которая защищает данные, но не могу сделать процедуру, которая при вводе пароля для защиты данных сохранялась после закрытия программы. А после, при повторном запуске программы чтобы получить доступ к защищенным данным ввести тот пароль который мы сам задали.

Вот исходник:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Registry, XPMan, jpeg, ShellAPI, IniFiles;
 
type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure ReadParams; // процедура чтения параметров
    procedure WriteParams; // процедура записи параметров
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
 
      private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.ReadParams;
Var
IniFile:TIniFile; // объявление переменной, через которую будут обрабатываться данные
begin
IniFile:=TIniFile.Create('mypro.ini'); // создаем переменную
Form1.Top:=IniFile.ReadInteger('FORM1','Form1Top',Form1.Top); // верхнее положение окна
Form1.Left:=IniFile.ReadInteger('FORM1','Form1Left',Form1.Left); // левое положение окна
Form1.Height:=IniFile.ReadInteger('FORM1','Form1Height',Form1.Height); // высота
Form1.Width:=IniFile.ReadInteger('FORM1','Form1Width',Form1.Width); // ширина
Edit1.Text:=IniFile.ReadString('FORM1','Edit1Text',Edit1.Text); // текст в Edit1
IniFile.Free; // если сами создаем, то сами уничтожаем.
end;
 
procedure TForm1.WriteParams;
Var
Path:String; // Переменная, где будет храниться путь к программе
IniFile:TIniFile;
begin
Path:=Application.ExeName; // полный путь и название запущенной программы
Path:=ExtractFileDir(Path); // отбрасываем название программы. Остается путь.
if Path[Length(Path)]<>'\' then Path:=Path+'\'; // если последний символ не \ то добавить его
IniFile:=TIniFile.Create(Path+'mypro.ini'); // полный путь к программе и имя ini файла
IniFile.WriteInteger('FORM1','Form1Top',Form1.Top);
IniFile.WriteInteger('FORM1','Form1Left',Form1.Left);
IniFile.WriteInteger('FORM1','Form1Height',Form1.Height);
IniFile.WriteInteger('FORM1','Form1Width',Form1.Width);
IniFile.WriteString('FORM1','Edit1Text',Edit1.Text);
IniFile.Free; // если сами создаем, то сами уничтожаем.
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
WriteParams;
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
ReadParams;
if not DirectoryExists('C:\G') then
    if not CreateDir('C:\G') then
    raise Exception.Create('Cannot create C:\G');
    Label1.Caption:='Всем привет! Программа позволит делать вот такие операции: создать папку, двигать, удалить, скрыть и показать';
    ShowMessage('Каталог успешно создан');
    end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckBox1.Checked=True and edit1.Text not null then
begin
WinExec('attrib -h -s -a /S /D "D:\$Recovery.bin"',SW_show);
sleep(300);
ShellExecute(Form1.Handle,nil,'cmd',PChar('/c ren D:\$Recovery.bin G'),nil,SW_HIDE);
Showmessage('Каталог доступен');
else if edit1.Text:='' then ShowMessage('Неверный пароль');
end;
begin
if CheckBox1.Checked=False then
begin
if Edit1.Text='' then ShowMessage('Введите пароль')
else
ShellExecute(Form1.Handle,nil,'cmd',PChar('/c ren D:\G $Recovery.bin'),nil,SW_HIDE);
sleep(250);
WinExec('attrib +h +s +a /S /D "D:\$Recovery.bin"',SW_hide);
if not (Edit1.Text='') then
begin
Showmessage('Каталог доступен');
end;
end;
 
end.
Подскажите пожалуйста как мне реализовать проект
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2014, 16:05
Ответы с готовыми решениями:

Где хранить пароль?
Мне надо чтобы при входе в приложение юзер вводил пароль, но где его потом хранить? Чтобы...

Где хранить пароль от программы?
Всем привет. Есть fxml форма с логином и паролем. Как можно сделать, чтобы при первом запуске...

Как и где хранить пароль от БД?
Я пишу многопользовательское ПО которое имеет доступ к БД MySQL. Допустим Пользователь знает...

Где хранить логин и пароль пользователя
Где тру программисты хранят логины и пароли авторизованных пользователей - в куках или сессиях?

11
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
24.04.2014, 16:07  [ТС] 2
Вот сам проект
Вложения
Тип файла: rar Защитник.rar (6.1 Кб, 13 просмотров)
0
4 / 4 / 2
Регистрация: 11.03.2013
Сообщений: 33
24.04.2014, 16:30 3
расставь правильно begin..end в процедуре Button1Click хотя бы.
0
Житель Земли
3002 / 3004 / 391
Регистрация: 26.07.2011
Сообщений: 11,463
Записей в блоге: 1
24.04.2014, 16:44 4
некоторые некритичные замечания
Цитата Сообщение от DimensionDrago Посмотреть сообщение
Delphi
1
Form1.Top:=...
- если метод принадлежит объекту (в данном случае Form1 {procedure TForm1.ReadParams;}) имя объекта можно опустить, т.е. просто Top, Width и так далее

Цитата Сообщение от DimensionDrago Посмотреть сообщение
Delphi
1
2
Path:=ExtractFileDir(Path); // отбрасываем название программы. Остается путь.
if Path[Length(Path)]<>'\' then Path:=Path+'\'; // если последний символ не \ то добавить его
вместо ExtractFileDir использовать ExtractFilePath (возвращает путь со слешем в конце, т.е. системным разделителем пути, который может быть другим символом, не слешем). сюда же: если нужно в конце пути добавить вышеупомянутый символ-разделитель, использовать функцию IncludeTrailingPathDelimiter, которая проверяет, и при необходимости добавляет этот символ.
1
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
24.04.2014, 16:50  [ТС] 5
Извиняюсь вот исправленный, но вопрос остается тот же: Как сделать так чтобы введенный пароль сохранился и в следующем запуске программы для получения доступа к данным ввести его же?
0
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
24.04.2014, 16:51  [ТС] 6
Забыл прикрепить
Вложения
Тип файла: rar Защитник1.rar (218.3 Кб, 8 просмотров)
0
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
24.04.2014, 16:59  [ТС] 7
Дико извиняюсь я там забыл указать диск с папкой

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Registry, XPMan, jpeg, ShellAPI, IniFiles;
 
type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    XPManifest1: TXPManifest;
    procedure ReadParams; // процедура чтения параметров
    procedure WriteParams;  // процедура записи параметров
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
 
      private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.ReadParams;
Var IniFile:TIniFile; // объявление переменной, через которую будут обрабатываться данные
begin
IniFile:=TIniFile.Create('project.ini'); // создаем переменную
Form1.Top:=IniFile.ReadInteger('FORM1','Form1Top',Form1.Top); // верхнее положение окна
Form1.Left:=IniFile.ReadInteger('FORM1','Form1Left',Form1.Left); // левое положение окна
Form1.Height:=IniFile.ReadInteger('FORM1','Form1Height',Form1.Height); // высота
Form1.Width:=IniFile.ReadInteger('FORM1','Form1Width',Form1.Width); // ширина
Edit1.Text:=IniFile.ReadString('FORM1','Edit1Text',Edit1.Text); // текст в Edit1
ComboBox1.ItemIndex:=IniFile.ReadInteger('FORM1','ComboBox1ItemIndex',ComboBox1.ItemIndex); // выбранный пункт
CheckBox1.Checked:=IniFile.ReadBool('FORM1','CheckBox1Checked',CheckBox1.Checked); // состояние CheckBox1
CheckBox2.Checked:=IniFile.ReadBool('FORM1','CheckBox2Checked',CheckBox2.Checked); // состояние CheckBox2
IniFile.Free; // если сами создаем, то сами уничтожаем.
end;
 
procedure TForm1.WriteParams;
Var IniFile:TIniFile;
begin
IniFile:=TIniFile.Create('project.ini');
IniFile.WriteInteger('FORM1','Form1Top',Form1.Top);
IniFile.WriteInteger('FORM1','Form1Left',Form1.Left);
IniFile.WriteInteger('FORM1','Form1Height',Form1.Height);
IniFile.WriteInteger('FORM1','Form1Width',Form1.Width);
IniFile.WriteString('FORM1','Edit1Text',Edit1.Text);
IniFile.WriteInteger('FORM1','ComboBox1ItemIndex',ComboBox1.ItemIndex);
IniFile.WriteBool('FORM1','CheckBox1Checked',CheckBox1.Checked);
IniFile.WriteBool('FORM1','CheckBox2Checked',CheckBox2.Checked);
IniFile.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ReadParams;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
WriteParams;
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
ReadParams;
if not DirectoryExists('C:\G') then
    if not CreateDir('C:\G') then
    raise Exception.Create('Cannot create C:\G');
    Label1.Caption:='Каталог находится здесь С:\G\'+'  Теперь можно туда копировать ваши данные';
    ShowMessage('Каталог успешно создан');
    end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckBox1.Checked=False then
begin
WinExec('attrib -h -s -a /S /D "D:\$Recovery.bin"',SW_show);
sleep(300);
ShellExecute(Form1.Handle,nil,'cmd',PChar('/c ren C:\$Recovery.bin G'),nil,SW_HIDE);
Showmessage('Каталог доступен')
end
else if CheckBox1.Checked=True then
begin
if Edit1.Text='' then ShowMessage('Введите пароль')
else
ShellExecute(Form1.Handle,nil,'cmd',PChar('/c ren C:\G $Recovery.bin'),nil,SW_HIDE);
sleep(250);
WinExec('attrib +h +s +a /S /D "D:\$Recovery.bin"',SW_hide);
if not (Edit1.Text='') then
begin
Showmessage('Каталог недоступен');
end;
end;
end;
end.
А также исходник
Вложения
Тип файла: rar Защитник.rar (218.6 Кб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
24.04.2014, 17:30  [ТС] 8
Спасибо исправил и воспользовался вашим советом
Delphi
1
2
3
4
5
Var
Path:String;
IniFile:TIniFile;
begin
Path:=IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
0
Житель Земли
3002 / 3004 / 391
Регистрация: 26.07.2011
Сообщений: 11,463
Записей в блоге: 1
24.04.2014, 18:08 9
Цитата Сообщение от DimensionDrago Посмотреть сообщение
Delphi
1
Path:=IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
снова излишки. ExtractFilePath СРАЗУ возвращает путь со СЛЕШЕМ в конце. зачем перегружать код

Не по теме:

я обычно, если нужно узнать как работает какая-нибудь функция, делаю тестовое приложение и смотрю результаты работы

0
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
24.04.2014, 18:22  [ТС] 10
DenNik, Извините конечно, но я новичек в программировании;
Исправил
Delphi
1
Path:=IncludeTrailingPathDelimiter(Application.ExeName);
.

Может вы сможете мне помочь? Я еще не нашел ответа на свой вопрос
Как сделать так чтобы введенный пароль сохранился и в следующем запуске программы для получения доступа к данным ввести его же?
0
Житель Земли
3002 / 3004 / 391
Регистрация: 26.07.2011
Сообщений: 11,463
Записей в блоге: 1
24.04.2014, 18:29 11
Цитата Сообщение от DimensionDrago Посмотреть сообщение
Path:=IncludeTrailingPathDelimiter(Application.ExeName);
и что в итоге? а в итоге
d:\Folder\Program.exe\

блин, так элементарно после всех объяснений написать
Path:= ExtractFilePath(Application.ExeName);

и новичок справится
0
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
25.04.2014, 05:35  [ТС] 12
Всем спасибо, разобрался с задачей=) Программу конечно надо доработать, но кто хочет посмотреть, вот готовый исходник.

P.S. Мне конечно надо зубрить и практиковаться и быть может буду отличным программистом. Всем удачи!
Вложения
Тип файла: rar Protector.rar (243.9 Кб, 13 просмотров)
0
25.04.2014, 05:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2014, 05:35
Помогаю со студенческими работами здесь

mssql + Android логин пароль где хранить?
есть сайт (интернет магазин ASP + MSSQL) поднят на хостинге у провайдера, приложение должно брать...

PasswordDeriveBytes. Где хранить пароль и соль ключа?
Из справки по данному класу: Примечание о безопасности Примечание по безопасности Не следует...

Где хранить логин и пароль (авторизация на сайте)
Доброго времени суток! Была поставлена задача сделать сайт с использованием JS. Есть сайт HTML....

Где следует хранить пароль доступа в Интернет
Для тех у кого нет современного роутера, который хранит логин и пароль внутри себя. Дело в том,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru