Главная страница
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.046 c
2-1272487277
Wadimka
2010-04-29 00:41
2010.08.27
Можно ли сделать?


8-1205755973
DoKi
2008-03-17 15:12
2010.08.27
gпопиксельное освещение


15-1275924128
bss
2010-06-07 19:22
2010.08.27
Регулярные выражения: как проверить вхождение числа в диапазон


15-1275913487
oleg_teacher
2010-06-07 16:24
2010.08.27
Mac os + delphi


2-1269192497
Мевилл
2010-03-21 20:28
2010.08.27
Индексы в delphi 2009