Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2009, 00:15   #1
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
Вопрос Реестр

Помогите! я не могу ничего не записать, не прочитать из реестра. Как это можно сделать?
DennerV вне форума Ответить с цитированием
Старый 16.05.2009, 01:47   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Вот наглядный пример:
Код:
Uses
Registry;
Procedure TForm1.Button1Click(Sender: TObject);
Var
Reg: TRegistry;
Begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Ris',True);
Reg.WriteString('Proga','12345');//Записываем параметр Proga и его значение 12345
Reg.Free;
End;
Procedure TForm1.Button2Click(Sender: TObject);
Var
Reg: TRegistry;
Begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Ris',True);
Edit1.Text:=Reg.ReadString('Proga');//Читаем значение параметра
Reg.Free;
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 18.05.2009, 18:37   #3
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
По умолчанию

Болшое спасибо, попробую.
DennerV вне форума Ответить с цитированием
Старый 18.05.2009, 19:59   #4
dolphin705
Форумчанин
 
Аватар для dolphin705
 
Регистрация: 02.08.2008
Сообщений: 209
По умолчанию

Вы не закрыли ключ после записи

Код:
Reg.CloseKey;
dolphin705 вне форума Ответить с цитированием
Старый 18.05.2009, 20:50   #5
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Вы не закрыли ключ после записи
В данном примере закрывать не обязательно т.к. там дальше нету действий. Один ключ открыли. Записали параметр и уничтожили.
Код:
Reg.Free;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 03.06.2009, 19:15   #6
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
Вопрос

Кто знает как проверить есть запись в реестре или нет?
DennerV вне форума Ответить с цитированием
Старый 03.06.2009, 19:47   #7
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от DennerV Посмотреть сообщение
Кто знает как проверить есть запись в реестре или нет?
Код:
Uses
Registry;
Procedure TForm1.Button1Click(Sender: TObject);
Var
Reg: TRegistry;
Begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_CURRENT_USER;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True);
If Reg.ValueExists('Proga') Then
Begin
ShowMessage('Запись есть');
End
Else
Begin
ShowMessage('Запись отсутствует');
End;
Reg.Free;
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 03.06.2009, 21:32   #8
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
По умолчанию

Terran, почему когда нет записи в реестре делфи ругается на этой строчке - AssignFile(Fail, ExtractFilePath(paramstr(0))+'\Data \Users.db');
если писать ShowMessage('Запись отсутствует'); SetDir.Show;
если просто ShowMessage('Запись отсутствует'); все работает.

Код:
procedure TVhod.RegRead(var Dir: String);
Var Reg: TRegistry;
Begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('Software\DelphiBook',True);
  If Reg.ValueExists('Path') Then
    Begin
      Dir:=Reg.ReadString('Path');//Читаем значение параметра
      ShowMessage(Dir);
    end
  Else
    Begin
      ShowMessage('Запись отсутствует');     
      SetDir.Show;
    end;
Reg.Free;

end;

procedure TVhod.FormCreate(Sender: TObject);
Var Rec:TUser;  // запись, прочитанная из файла
    Str, Directory: String;
    i: Integer;
    Reg: TRegistry;
begin

RegRead(Directory);
 Caption:=Directory;
  AssignFile(Fail, ExtractFilePath(paramstr(0))+'\Data\Users.db');
  {$I-}
  Reset(Fail);  // открыть файл
  {$I+}
  If IOResult <> 0 Then
   Begin
    ShowMessage('Ошибка открытия файла БД.');
    Exit;
   end;
//////////////////////////////////////////////////
  i:=0;
  Memo1.Clear; // очистить список поля Memo
  while not EOF(Fail) do
    begin
      Read(Fail, Rec); // прочитать запись
      UserList[i]:=Rec;
      i:=i+1;
      sComboBox1.Items.Add(Rec.Name);
      Str:= Rec.Name+ ', ' + Rec.Parol+ ': ' + Rec.FIO+ ', ' + Rec.Spec+ ', ' + Rec.Admin;;
      Memo1.Lines.Add(Str);
      end;
  CloseFile( Fail );  // закрыть файл
end;
Код:
implementation

{$R *.dfm}

procedure TSetDir.sButton2Click(Sender: TObject);
begin
Close;
end;

procedure TSetDir.sButton1Click(Sender: TObject);
Var Reg: TRegistry;
Begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('Software\DelphiBook',True);
Reg.WriteString('Path',sShellTreeView1.Path);//Записываем параметр и его значение
Reg.Free;
//Reg.CloseKey;
close;
end;
end.
DennerV вне форума Ответить с цитированием
Старый 04.06.2009, 01:42   #9
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Код не полный. Откуда SetDir.Show;? Сложнова-то что либо говорить.
Цитата:
почему когда нет записи в реестре делфи ругается на этой строчке - AssignFile(Fail, ExtractFilePath(paramstr(0))+'\Data \Users.db');
А что пишет Делфи, когда ругается на этой строчке?
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 04.06.2009, 04:00   #10
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

наскока я понял SetDir - это вторая форма.. процедура RegRead вызывается при создании первой формы.. в это время вторая форма еще не создана.. вот поэтому ее и невозможно отбразить (SetDir.Show)

но если все сделат иначе..
1) удаляем эту форму с раздела Uses в *.dpr фале, также уляем от туда строчку создания формы (Application.CreateForm(TSetDir, SetDir); )..
2) добавляем модуль с этой (ТSetDir) формой в раздел uses главной формы..
3)для показа формы используем следующий код:

Код:
SetDir:=TSetDir.Create(Self);//создаем форму
SetDir.ShowModal;//отображаем ее
SetDir.Free;//удаляем после работы..
Цитата:
почему когда нет записи в реестре делфи ругается на этой строчке - AssignFile(Fail, ExtractFilePath(paramstr(0))+'\Data \Users.db');
а когда запись есть - то не ругается?? странно.. я не вижу где у тебя обьявлена переменная Fail..
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"

Последний раз редактировалось Ntlegend; 04.06.2009 в 04:08.
Ntlegend вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реестр Volkogriz Общие вопросы Delphi 5 01.05.2008 21:23
Реестр и C++ Лубышев Помощь студентам 1 12.03.2008 08:28
реестр Михаил Юрьевич Общие вопросы Delphi 9 12.02.2008 00:00
Реестр GAGARIN-NEW Свободное общение 2 06.01.2008 11:31