|
Вопрос # 1 921/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Как возможно осуществить следующее : мне необходимо, что бы в процессе работы изменялась переменная и сохранялась с результатом. Т.е. запускаем программу у переменной уже прошлое значение.
 |
Вопрос задал: WHILL (статус: Посетитель)
Вопрос отправлен: 20 сентября 2008, 19:11
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Паровоз
Здравствуйте, WHILL!
Нужно вопользоваться реестром или ini-файлом.
 |
Ответ отправил: Паровоз (статус: 10-ый класс)
Время отправки: 20 сентября 2008, 20:00
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 12; последнее сообщение — 22 сентября 2008, 16:46; участников в обсуждении: 4.
|
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 (статус: Посетитель), 20 сентября 2008, 20:32 [#4]:
>> На всякий случай привожу пример с реестром:
Спасибо за исходный код. Но как быть, если к примеру доступ к реестру заблокирован? К примеру если учетная запись ограничена, данный код становиться бессмысленным... Так как никаких действий произвести будет невозможно, а у меня может получиться и такая ситуация....
|
|
Паровоз (статус: 10-ый класс), 20 сентября 2008, 20:53 [#5]:
Используйте ini-файл или просто обычный файл, в который будете записывать нужное значение переменной.
|
|
Паровоз (статус: 10-ый класс), 20 сентября 2008, 20:55 [#6]:
А почему вы не хотите использовать файлы? Может у Вашей проблемы есть решение, в котором файлы использовать можно?
|
|
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 (статус: Посетитель), 21 сентября 2008, 09:17 [#10]:
Спасибо Вадим, за подсказку. Поскольку программа все таки простенькая и особо ломать ее никто не собираеться я применил немного иной метод с паролями, но в другом случае постараюсь поработать и с реестром и с хэшами паролей в файле.
Всем спасибо за ответы.
|
|
Feniks (статус: Бакалавр), 22 сентября 2008, 13:55 [#11]:
А для шифрования можете использовать компонент DCPCrypt - один из известных пакетов для шифровки и расшифровки данных. Содержит более 100 надёжных алгоритмов шифрования.
Шифруйте себе на здоровье и храните в реестре, как указал Вадим.
|
|
WHILL (статус: Посетитель), 22 сентября 2008, 16:46 [#12]:
Feniks спасибо! Попробую его применить
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|