Форум: "Начинающим";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];
ВнизЗапись в реестр Найти похожие ветки
← →
petr (2009-07-08 11:41) [0]Здравствуйте!!! Подскажите пожалуйста, почему не происходит создание и запись значения параметра в реестр. Все Вроде правильно написано на мой взгляд. Вот мой код
ip := TRegistry.Create;
ip.RootKey:=HKEY_LOCAL_MACHINE;
ip.OpenKey("Software", true);
ip.OpenKey("Microsoft", true);
ip.OpenKey("Windows", true);
if ip.ValueExists("IP") then
begin
if ip.ReadString("IP")=Edit1.Text then
begin Showmessage("Вы уже работали с IP-адресом "+ip.ReadString("IP"));
button1.Enabled:=false; button2.Enabled:=false;exit;end
else
ip.writestring("IP",Edit1.Text);
ip.Free;
end;
← →
Anatoly Podgoretsky © (2009-07-08 11:50) [1]> petr (08.07.2009 11:41:00) [0]
Бр,
Утечки, отсутсвия понятия о защите ресурсов, защита от ошибок пользователя, да еще и в системную, чужую ветку реестра залез.
← →
Dennis I. Komarov © (2009-07-08 11:57) [2]
> да еще и в системную, чужую ветку реестра залез.
Ну чем же мы хуже мелкомягких...
← →
petr (2009-07-08 12:05) [3]Я просто учусь работать с реестром. Вот код
REG := TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey("Software", true);
reg.OpenKey("Microsoft", true);
reg.OpenKey("Windows", true);
if reg.ValueExists("money") then
else begin
reg.writestring("money","0"); end;
все работает, аip := TRegistry.Create;
ip.RootKey:=HKEY_LOCAL_MACHINE;
ip.OpenKey("Software", true);
ip.OpenKey("Microsoft", true);
ip.OpenKey("Windows", true);
if ip.ValueExists("IP") then
begin
if ip.ReadString("IP")=Edit1.Text then
begin Showmessage("Вы уже работали с IP-адресом "+ip.ReadString("IP"));
button1.Enabled:=false; button2.Enabled:=false;exit;end
else
ip.writestring("IP",Edit1.Text);
ip.Free;
end;
не работает, хотя очень похож
← →
Anatoly Podgoretsky © (2009-07-08 12:09) [4]А это похоже на лохотрон, мошенничество.
← →
Loginov Dmitry © (2009-07-08 22:58) [5]
> Я просто учусь работать с реестром.
Несмотря на не слишком уж и большой объем кода, ошибок слишком много. Нужно хотя бы так:
ip := TRegistry.Create;
try
ip.RootKey:=HKEY_LOCAL_MACHINE;
if ip.OpenKey("Software\Microsoft\Windows", True) then
begin
if ip.ValueExists("IP") then
begin
if ip.ReadString("IP")=Edit1.Text then
begin
Showmessage("Вы уже работали с IP-адресом "+ip.ReadString("IP"));
button1.Enabled:=false;
button2.Enabled:=false;
exit;
end else
ip.writestring("IP",Edit1.Text);
end;
end else
raise Exception.Create("Не удалось открыть раздел Software\Microsoft\Windows "+
"для записи. Вероятно, у пользователя не достаточно прав.");
finally
ip.Free;
end;
И лезть в системный раздел HKEY_LOCAL_MACHINE часто не обязательно. Он требует на запись права администратора. Запустил программу под администратором, сменил настройки, пользователь без прав их не испортит. Чтение - без проблем, но с помощью OpenKeyReadOnly.
Для хранения пользовательских параметров (своих для каждого пользователя) используется раздел HKEY_CURRENT_USER. Для всех прочих параметров используются файлы конфигурации (ini, xml), базы данных и т.п.
← →
Dennis I. Komarov © (2009-07-09 09:42) [6]
> petr (08.07.09 12:05) [3]
У меня бы и первый не отработал :P
Создай себе ветку и учись, чего к мелкомягким то полез? У них вкуснее?
← →
brother © (2009-07-09 09:46) [7]> чего к мелкомягким то полез? У них вкуснее?
> if reg.ValueExists("money") then
шифроваться от взлома вздумал имхо
← →
Dennis I. Komarov © (2009-07-09 09:57) [8]
> brother © (09.07.09 09:46) [7]
Ну-ну :)
← →
Anatoly Podgoretsky © (2009-07-09 12:35) [9]> Dennis I. Komarov (09.07.2009 09:42:06) [6]
Надеется, что там меньше вероятность, что его пакость обнаружат.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c