Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Delphi 7, реестр.   Найти похожие ветки 

 
Guz   (2010-03-22 15:54) [0]

Здравствуйте, уважаемые форумчане. Недавно открыл для себя Дельфи, и начал писать простейшие программы. В данный момент пытаюсь разобраться в работе с реестром. Но никак не могу понять, в чём ошибка в нижеследующем коде.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
Reg:TRegIniFile;
begin
Reg:=TReginifile.Create("Test_my") ;
Reg.WriteString("","","1");
Reg.Free
end;

procedure TForm1.FormCreate(Sender: TObject);
var
Key:TRegistry;
begin
Key.RootKey:= HKEY_CURRENT_USER;
if Key.ValueExists("test_my") then
begin
Key.OpenKey("Test_my", true);
Key.ReadString("");
Key.CloseKey;
Key.Free
end;
end;
 
При закрытии программы пишет ошибку. Почему?
Текст ошибки привести затруднительно, нет интернета на компьютере с Дельфи.


 
Плохиш ©   (2010-03-22 16:15) [1]


> При закрытии программы пишет ошибку. Почему?

У вас ошибка в программе.

> Текст ошибки привести затруднительно, нет интернета на компьютере
> с Дельфи.

Проблемы индейцев шерифа не волнуют.


 
guzerus ©   (2010-03-22 16:18) [2]

Удалено модератором


 
Сергей М. ©   (2010-03-22 16:19) [3]


> При закрытии программы пишет ошибку


По идее ошибка должна возникнуть уже при открытии.


procedure TForm1.FormCreate(Sender: TObject);
var
Key:TRegistry;
begin
// Key := TRegistry.Create; // <- создание объекта, почему-то отсутствующее у тебя в коде
Key.RootKey:= HKEY_CURRENT_USER; // <- иначе обращение к свойству несуществующего объекта обязано вызвать исключительную ситуацию


 
guzerus ©   (2010-03-22 16:36) [4]

У меня алгоритм такой.
Программа должны быть на один запуск. Значит при закрытии вы прописываем данные в реестр, а при открытии проверяем наличие этих данных. Если есть-не запускается.
Пока что я проверю только запись и чтение, проверки ещё не делал.
В комментариях, что у меня где делается.
procedure TForm1.FormCreate(Sender: TObject);
var
Key:TRegistry; // Переменная
begin
Key.RootKey:= HKEY_CURRENT_USER;// Указываем, в какой из веток.
if Key.ValueExists("test_my") then {В этой ветке проверяем, существует ли наша переменная}
begin // Если да
Key.OpenKey("Test_my", true); // То открываем её, читаем, освобождаем...
Key.ReadString("");
Key.CloseKey;
Key.Free
end;
end;
{Если же переменной нет, то ничего. Создастся переменная при закрытии программы.}  

Просто я не очень ясно понимаю, в чём отличие TRegistry от Reginifile. Вроде-бы Registry это значение ключа, так как прочитать моно только один параметр. А RIF это весь ключ.


 
guzerus ©   (2010-03-22 16:36) [5]

У меня алгоритм такой.
Программа должны быть на один запуск. Значит при закрытии вы прописываем данные в реестр, а при открытии проверяем наличие этих данных. Если есть-не запускается.
Пока что я проверю только запись и чтение, проверки ещё не делал.
В комментариях, что у меня где делается.
procedure TForm1.FormCreate(Sender: TObject);
var
Key:TRegistry; // Переменная
begin
Key.RootKey:= HKEY_CURRENT_USER;// Указываем, в какой из веток.
if Key.ValueExists("test_my") then {В этой ветке проверяем, существует ли наша переменная}
begin // Если да
Key.OpenKey("Test_my", true); // То открываем её, читаем, освобождаем...
Key.ReadString("");
Key.CloseKey;
Key.Free
end;
end;
{Если же переменной нет, то ничего. Создастся переменная при закрытии программы.}  

Просто я не очень ясно понимаю, в чём отличие TRegistry от Reginifile. Вроде-бы Registry это значение ключа, так как прочитать моно только один параметр. А RIF это весь ключ.
С спасибо за нормальное обращение, не ожидал.


 
Медвежонок Пятачок ©   (2010-03-22 16:37) [6]

отличий нет.
вызывать конструктор надо для обоих.


 
Игорь Шевченко ©   (2010-03-22 18:32) [7]

http://ln.com.ua/~openxs/articles/smart-questions-ru.html



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
2-1272353381
Tima
2010-04-27 11:29
2010.08.27
Путь к файлу библиотеки по открытому хэндлу


15-1270197774
12
2010-04-02 12:42
2010.08.27
Тоже про природу. Объясните феномен.


2-1274359047
РП
2010-05-20 16:37
2010.08.27
Байты в число и число в байты нужной размерности


2-1265977153
fford
2010-02-12 15:19
2010.08.27
получить узел по номеру в TVirtualStringTree


15-1265814153
OneYoungMan
2010-02-10 18:02
2010.08.27
Речевое общение через сеть..