Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 921

Раздел: Delphi » Прочее
/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Как возможно осуществить следующее : мне необходимо, что бы в процессе работы изменялась переменная и сохранялась с результатом. Т.е. запускаем программу у переменной уже прошлое значение.

WHILL Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: WHILL (статус: Посетитель)
Вопрос отправлен: 20 сентября 2008, 19:11
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Паровоз

Здравствуйте, WHILL!
Нужно вопользоваться реестром или ini-файлом.

Ответ отправил: Паровоз (статус: 10-ый класс)
Время отправки: 20 сентября 2008, 20:00
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 12; последнее сообщение — 22 сентября 2008, 16:46; участников в обсуждении: 4.
WHILL

WHILL (статус: Посетитель), 20 сентября 2008, 20:11 [#1]:

А более никак? Мне нежелательно пользоваться вообще файлами. Вот с реестром лучше - но все равно, может возможен другой вариант?
Паровоз

Паровоз (статус: 10-ый класс), 20 сентября 2008, 20:19 [#2]:

"Мне нежелательно пользоваться вообще файлами. Вот с реестром лучше "
Реестр - это тоже набор файлов. Без использования файлов вряд ли возможно сделать то, что Вы хотите.
Паровоз

Паровоз (статус: 10-ый класс), 20 сентября 2008, 20:23 [#3]:

На всякий случай привожу пример с реестром:

uses registry;

procedure TForm1.Button1Click(Sender: TObject);
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\MyName',True);
reg.WriteInteger('MyIntParameter',2008);
reg.WriteBool('MyBooleanParameter',True);
reg.WriteString('MyStringParameter','MyString');
//.........................................
reg.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
reg:TRegistry;
x:Integer;
y:Boolean;
z:string;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\MyName',True);
x:=reg.ReadInteger('MyIntParameter');
y:=reg.ReadBool('MyBooleanParameter');
z:=reg.ReadString('MyStringParameter');
//.................................
reg.Free;
Memo1.Lines.Clear;
Memo1.Lines.Add('x='+IntToStr(x));
Memo1.Lines.Add('y='+IntToStr(Ord(y)));
Memo1.Lines.Add('z='+z);
end;
WHILL

WHILL (статус: Посетитель), 20 сентября 2008, 20:32 [#4]:

>> На всякий случай привожу пример с реестром:

Спасибо за исходный код. Но как быть, если к примеру доступ к реестру заблокирован? К примеру если учетная запись ограничена, данный код становиться бессмысленным... Так как никаких действий произвести будет невозможно, а у меня может получиться и такая ситуация....
Паровоз

Паровоз (статус: 10-ый класс), 20 сентября 2008, 20:53 [#5]:

Используйте ini-файл или просто обычный файл, в который будете записывать нужное значение переменной.
Паровоз

Паровоз (статус: 10-ый класс), 20 сентября 2008, 20:55 [#6]:

А почему вы не хотите использовать файлы? Может у Вашей проблемы есть решение, в котором файлы использовать можно?
WHILL

WHILL (статус: Посетитель), 20 сентября 2008, 22:19 [#7]:

Я не хочу использовать фаил, т.к. в нем должен храниться пароль :)
Паровоз

Паровоз (статус: 10-ый класс), 20 сентября 2008, 22:45 [#8]:

???
Пароль никто не хранит, хранят хэш-код пароля.
Вадим К

Вадим К (статус: Академик), 21 сентября 2008, 01:23 [#9]:

to Паровоз.
Сохранять в HKEY_LOCAL_MACHINE. Вы ничего лучше придумать не могли? доступ к этой ветке реестра только по пропускам, то есть только с правами администратора и выше. С другой стороны, Windows никак не ожидает, что простая программка вот так просто тут оставит свои данные. И если она их "почистит" (а имеет полное право), то не надо обижаться.
Для обычных пользовательских данных есть HKEY_USERS и HKEY_CURRENT_USER - туда пользователю можно писать практически всегда. Больше того, эти ветки рееста подставляются для каждого пользователя с его куста (так называются файлы, где храняться части рееста). Поэтому у каждого пользователя могут быть свои данные.

А пароли надёжнее вообще нигде не хранить. И если бояться, что своруют (а если надо - своруют всегда, даже если пароль храниться только в голове - всё вопрос времени и денег), то лучше вообще не садиться писать программы, и тем более быть подальше от компьютера.
Не ищите несуществующих врагов.
Галочка "подтверждения прочтения" - вселенское зло.
WHILL

WHILL (статус: Посетитель), 21 сентября 2008, 09:17 [#10]:

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

Всем спасибо за ответы.
Feniks

Feniks (статус: Бакалавр), 22 сентября 2008, 13:55 [#11]:

А для шифрования можете использовать компонент DCPCrypt - один из известных пакетов для шифровки и расшифровки данных. Содержит более 100 надёжных алгоритмов шифрования.
Шифруйте себе на здоровье и храните в реестре, как указал Вадим.
WHILL

WHILL (статус: Посетитель), 22 сентября 2008, 16:46 [#12]:

Feniks спасибо! Попробую его применить :)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:40
Выполнено за 0.02 сек.