Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с реестром, Помогите понять ошибку 
:(
    Опции темы
Zero
  Дата 27.1.2005, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Вообщем, я тут прочитал литературу, и по ней составил код, и он у меня полностью работает, но в тот момент когда закрываешь програаму, то после всё время выдаётся какаято ошибка. Обясните пожалуйста, по каким причинам она возникает, и желательно что нужно добавить, но именно в мой код а не другой вариант, а то у меня есть уже несколько вариантов. Мне надо лишь разобратся в самом смысле.
Для добавления в реестр ключа:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
 Reg:TReginifile;
begin
 reg.Create;
 reg.RootKey:=HKEY_LOCAL_MACHINE;
 reg.WriteString('software\Microsoft\Windows\CurrentVersion\Run','Exapmle','<Здесь указан путь к файлу>');
end;

Для удаления из реестра:
Код

procedure TForm1.Button2Click(Sender: TObject);
var
 Reg:TReginifile;
begin
 reg.Create;
 reg.RootKey:=HKEY_LOCAL_MACHINE;
 reg.DeleteKey('software\Microsoft\Windows\CurrentVersion\Run','Exapmle');
end;

Самое прикольное что если в конец каждого из моих кодов добавить:
Код

reg.Destroy

то при выполнении этой строки всё время выдаётся ошибка, и даже если перед ней написать:
Код

reg.CloseKey
Вообщем вроде всё.
Заранее спасибо!!!
PM MAIL ICQ   Вверх
Alex
Дата 27.1.2005, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



А у тебя случайно глобальная переменная Reg не где в программе не определена?


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Zero
Дата 27.1.2005, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Кстати, это тоже не мог бы ты мне объяснить. А то вначале я когда ставил REG, как глобальную, то у меня даже при создании класса TResistry, уже не компилилось. Первый раз за мою жизнь я такое вижу. Раньше думал что глобальная переменная заменяет кучу локальных.
PM MAIL ICQ   Вверх
Alex
Дата 27.1.2005, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Так стоп, а гед это ты увидел, что так create нужно делать?
Добавлено @ 02:05
Твой код записывается вот так:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
 reg: TReginifile;
begin
 reg:= TReginifile.Create;
 try
   reg.RootKey:=HKEY_LOCAL_MACHINE;
   reg.WriteString('software\Microsoft\Windows\CurrentVersion\Run','Exapmle','<Здесь указан путь к файлу>');
 finally
   reg.Free;
 end;
end;

Добавлено @ 02:07
А я вообще люблю писать без всяких переменных?

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 with TReginifile.Create do try
   RootKey:=HKEY_LOCAL_MACHINE;
   WriteString('software\Microsoft\Windows\CurrentVersion\Run','Exapmle','<Здесь указан путь к файлу>');
 finally
   Free;
 end;
end;



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Zero
Дата 27.1.2005, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(Alex @ 27.1.2005, 02:03)
а гед это ты увидел, что так create нужно делать?

А точно, спасибо большое!!! smile Всё время так и бывает, когда с чем то новым начинаешь разбиратся, то как всегда из за какой-нибудь мелочи целый вечер и просидишь. smile
Цитата(Alex @ 27.1.2005, 02:03)
я вообще люблю писать без всяких переменных?

Я тоже, но поначалу, так меньше вероятности получить ошибку. Да ещё Free, с Destroy перепутать умудрился. smile
PM MAIL ICQ   Вверх
p0s0l
Дата 27.1.2005, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Цитата(Zero @ 27.1.2005, 02:28)
Да ещё Free, с Destroy перепутать умудрился
В принципе ничего в этом страшного нет.
Free - это капельку "умный" Destroy, который не освобождает экземпляры классов, которые не созданы (или уже освобождены), и тоже использует Destroy:
Код
procedure TObject.Free;
begin
 if Self <> nil then Destroy;
end;


Это сообщение отредактировал(а) p0s0l - 27.1.2005, 14:40


--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.