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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.05.2009, 19:27   #1
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
Вопрос 2-ва вaрианта в Reg.OpenKey

Почему не работает?
Идея такова прога ишет параметр NameProg! если его нет! тогда следующая сылка!
Скажем
Software\Games to

Код:
var  
Reg: TRegistry;

Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;

if (Reg.OpenKey('\Software\My Prog', true)) and (Reg.readstring('NameProg')) then
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось Stilet; 06.05.2009 в 11:09.
KWN, lnc вне форума
Старый 03.05.2009, 20:45   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

дык проверяй, if keyexists и пошел дальше
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума
Старый 03.05.2009, 21:07   #3
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

KORN извини а можно полностью код ПЛИЗЗЗЗЗЗЗЗ
а то не полоучается вот половина кода, который я понел!

Код:
var reg:Tregistry;
    f:string;
begin
  reg:=Tregistry.Create; 
  try
   reg.RootKey:=HKEY_CLASSES_ROOT; 
   if not reg.KeyExists
хочу так же напомнить что адреса разные... если прога не находит здесь скажем в

HCU\Software\My Prog параметр Neext

тогда программа пытается найти в след. адресе скажем здесь

HLM\Software\Proges параметр Prev

Спасибо за внимание.
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось Stilet; 06.05.2009 в 11:09.
KWN, lnc вне форума
Старый 04.05.2009, 03:56   #4
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

сам то подумать не хочешь совсем7 постоянно за тебя все делать нужно7 в инете и на форуме очень много раз приводились примеры... ты вообще думаешь что пишешь или нет7

Код:
if not reg.keyexists('HCU\Software\My Prog') and reg.valueexists('Neext') then
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума
Старый 04.05.2009, 05:37   #5
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
Восклицание

KORN в очередной раз извини просто когда я думаю у меня след. получается и по щас немогу понять что здесь не так! Находит первый а второй не хочет! почему?
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось KWN, lnc; 04.05.2009 в 15:42.
KWN, lnc вне форума
Старый 04.05.2009, 05:57   #6
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

а ты ключ почему не закрываешь, перед переходом к другому ключу7 что так сложно запомнить: создал, открыл, выполнил операцию, закрыл, уничтожил...
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума
Старый 04.05.2009, 06:52   #7
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

KORN извини а где именно??? указываю здесь и баг!!!

Код:
if Reg.ValueExists('Путь к exe')
then
Edit1.Text :=Reg.ReadString('Путь к exe')
else
CloseKey;
Free; 
begin
if Reg.ValueExists('Путь к папке')
then
Edit1.Text := Reg.ReadString('Путь к папке')
else
CloseKey;
Free;
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось Stilet; 06.05.2009 в 11:09.
KWN, lnc вне форума
Старый 04.05.2009, 07:36   #8
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

пипец... слов нету

уничтожать нужно после всех операций... только когда переменная тебе не нужна... а закрывать ключ тогда когда ты с ним больше не работаешь

ясен пень ошибка, ты обращаешься к переменной которой нет
Перед тем как спросить ищи на форуме и в GOOGLE

Последний раз редактировалось KORN; 04.05.2009 в 07:39.
KORN вне форума
Старый 04.05.2009, 15:27   #9
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

ПРоблема в том что когда я просто закрываю у меня вылетает баг.

Exception EAccessViolation in module Project1.exe at 00003876.
Access violation at address 00403876 in module 'Project1.exe'. Read of address 444E4957.

вот исходник

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Registry, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.KeyExists('\Software\File')
then Reg.OpenKey('\Software\File', true)
else begin Reg.KeyExists('\Software\Folder');
Reg.OpenKey('\Software\Folder', true)
end;

if Reg.ValueExists('Путь к exe')
then
Edit1.Text :=Reg.ReadString('Путь к exe')
else
Reg.CloseKey;
begin
if Reg.ValueExists('Путь к папке')
then
Edit1.Text := Reg.ReadString('Путь к папке')
else
Reg.CloseKey;
Reg.Free;
end;
end;
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Registry, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.KeyExists('\Software\File')
then Reg.OpenKey('\Software\File', true)
else begin Reg.KeyExists('\Software\Folder');
Reg.OpenKey('\Software\Folder', true)
end;

if Reg.ValueExists('Путь к exe')
then
Edit1.Text :=Reg.ReadString('Путь к exe')
else
Reg.CloseKey;
begin
if Reg.ValueExists('Путь к папке')
then
Edit1.Text := Reg.ReadString('Путь к папке')
else
Reg.CloseKey;
Reg.Free;
end;
end;

end.
end.
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось Stilet; 06.05.2009 в 11:09.
KWN, lnc вне форума
Старый 04.05.2009, 18:56   #10
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

else
Reg.CloseKey;
begin

ничего странного не замечаешь7
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите прочитать reg файл в RichEdit или ListBox inndim Общие вопросы Delphi 4 09.06.2008 12:56