Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.072 c
15-1266417633
Kerk
2010-02-17 17:40
2010.08.27
Сурков, замруководителя администрации президента, о модернизации


15-1267824608
Юрий
2010-03-06 00:30
2010.08.27
С днем рождения ! 6 марта 2010 суббота


2-1271956369
Сергей
2010-04-22 21:12
2010.08.27
Нужна помошь (незнаю как описать)


15-1265149756
иксик
2010-02-03 01:29
2010.08.27
Не пытайтесь ничего понять


2-1271164899
mlalx213
2010-04-13 17:21
2010.08.27
Задачка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский