Главная страница
    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.46 MB
Время: 0.063 c
3-1242073212
goooodwin
2009-05-12 00:20
2010.08.27
Помогите пожалуйста, ошибка вылазиет


2-1273681750
Baks
2010-05-12 20:29
2010.08.27
Как можно удалить запись из середины нетепизированного файла?


15-1271004598
Константинов
2010-04-11 20:49
2010.08.27
Недоступность ресурсов


2-1267552320
HRustBB
2010-03-02 20:52
2010.08.27
Виртуальный диск с источником FTP


15-1275036370
Anatoly Podgoretsky
2010-05-28 12:46
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский