Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
DimensionDrago
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
1

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

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

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

Вот исходник:
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 16:05
Ответы с готовыми решениями:

Где хранится пароль от базы данных в конструкторе тестов?
Надо узнать где храниться пароль от бд в конструкторе тестов от keepsoft.ru,...

как хранить пароль
Всем привет! расскажите а лучше покажите на примере как можно хранить пароль от...

Где хранить изображения приложения?
Привет всем. Я делаю программу по физике, там много тем и картинок. В программе...

Где лучше хранить данные
Проблема вот в чем. Один знакомый попросил написать для него прогу для...

Где хранить данные StringGrid?
Здравствуйте! Хочу сделать программу для сравнения оружия. Но не знаю где и...

11
DimensionDrago
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
24.04.2014, 16:07  [ТС] 2
Вот сам проект
0
Вложения
Тип файла: rar Защитник.rar (6.1 Кб, 12 просмотров)
XMalon
4 / 4 / 2
Регистрация: 11.03.2013
Сообщений: 33
24.04.2014, 16:30 3
расставь правильно begin..end в процедуре Button1Click хотя бы.
0
DenNik
Непрофессионал
1801 / 1386 / 307
Регистрация: 26.07.2011
Сообщений: 7,824
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
DimensionDrago
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
24.04.2014, 16:50  [ТС] 5
Извиняюсь вот исправленный, но вопрос остается тот же: Как сделать так чтобы введенный пароль сохранился и в следующем запуске программы для получения доступа к данным ввести его же?
0
DimensionDrago
0 / 0 / 0
Регистрация: 25.02.2014
Сообщений: 15
24.04.2014, 16:51  [ТС] 6
Забыл прикрепить
0
Вложения
Тип файла: rar Защитник1.rar (218.3 Кб, 5 просмотров)
DimensionDrago
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.
А также исходник
0
Вложения
Тип файла: rar Защитник.rar (218.6 Кб, 3 просмотров)
DimensionDrago
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
DenNik
Непрофессионал
1801 / 1386 / 307
Регистрация: 26.07.2011
Сообщений: 7,824
24.04.2014, 18:08 9
Цитата Сообщение от DimensionDrago Посмотреть сообщение
Delphi
1
Path:=IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
снова излишки. ExtractFilePath СРАЗУ возвращает путь со СЛЕШЕМ в конце. зачем перегружать код

Не по теме:

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

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

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

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

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

P.S. Мне конечно надо зубрить и практиковаться и быть может буду отличным программистом. Всем удачи!
0
Вложения
Тип файла: rar Protector.rar (243.9 Кб, 12 просмотров)
25.04.2014, 05:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2014, 05:35

Где хранить указатель или куда его спрятать?
В общем, с ООП еще слабо знаком, но нужна помощь. Есть динамический список и...

Где в реестре лучше всего хранить данные об активации приложения?
Приветствую. Хотелось бы понять, где именно в реестре лучше всего хранить...

Где хранить сборник анекдотов, чтобы был только exe файл?
Привет, я хочу создать приложение которое будет показывать огромное количество...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru