| 
| 
 | Вопрос # 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 спасибо! Попробую его применить   |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |