Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.073 c