Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bdexterholland

Tregistry

Recommended Posts

Eu coloquei o acesso ao registro no oncreate do form e no boão aplicar da janela de opções...

Engraçado que acabei de testar no botão aplicar e não deu pau...

 

Em um dos testes apareceu a mensagem:

failed to get data from fade

Esse é o meu oncreate da janela principal:

I:=1;//  DoubleBuffered:=true;  DragAcceptFiles( Handle,True );  tabulacao:='	';  Abas2.Checked:=true; frmtx:=janelaprincipal.Width;  frmty:=janelaprincipal.Height;  Registro := TRegistry.Create;  Registro.RootKey := HKEY_CURRENT_USER;  if registro.KeyExists('\Software\PSYWARE\PSYpad') then	begin	  Registro.OpenKey('\Software\PSYWARE\PSYpad', false);	  frmopcoes.CheckBox1.Checked:=registro.ReadBool('fade');	  frmopcoes.CheckBox2.Checked:=registro.ReadBool('toolbar');	  frmopcoes.CheckBox3.Checked:=registro.ReadBool('statusbar');	  frmopcoes.CheckBox4.Checked:=registro.ReadBool('alwaysontop');	  frmopcoes.CheckBox5.Checked:=registro.ReadBool('linebreak');	  frmopcoes.CheckBox6.Checked:=registro.ReadBool('fullscreen');	  frmopcoes.CheckBox7.Checked:=registro.ReadBool('hidetotray');	  frmopcoes.CheckBox8.Checked:=registro.ReadBool('multiplewindows');	  frmopcoes.CheckBox9.Checked:=registro.ReadBool('linkpanel');	  frmopcoes.CheckBox10.Checked:=registro.ReadBool('backup');	  frmopcoes.spinedit2.Value:=registro.ReadInteger('backuptime');	end  else	begin	  Registro.OpenKey('\Software\PSYWARE\PSYpad', true);	  registro.writeBool('fade',frmopcoes.CheckBox1.Checked);	  registro.writeBool('toolbar',frmopcoes.CheckBox2.Checked);	  registro.writeBool('statusbar',frmopcoes.CheckBox3.Checked);	  registro.writeBool('alwaysontop',frmopcoes.CheckBox4.Checked);	  registro.writeBool('linebreak',frmopcoes.CheckBox5.Checked);	  registro.writeBool('fullscreen',frmopcoes.CheckBox6.Checked);	  registro.writeBool('hidetotray',frmopcoes.CheckBox7.Checked);	  registro.writeBool('multiplewindows',frmopcoes.CheckBox8.Checked);	  registro.writeBool('linkpanel',frmopcoes.CheckBox9.Checked);	  registro.writeBool('backup',frmopcoes.CheckBox10.Checked);	  registro.writeInteger('backuptime',frmopcoes.SpinEdit2.Value);	end;  registro.Free;  if frmopcoes.CheckBox1.Checked then	AnimateSafe(Handle, 500, AW_BLEND or AW_ACTIVATE);  ToolBar1.Visible:=frmopcoes.CheckBox2.Checked;  StatusBar1.Visible:=frmopcoes.CheckBox3.Checked;  if frmopcoes.CheckBox3.Checked then	begin	  janelaprincipal.FormStyle:=fsStayOnTop;	  Sempreporcima1.Checked:=true;	end;  if frmopcoes.CheckBox10.Checked then	begin	  Timer2.Enabled:=true;	  Timer2.Interval:=frmopcoes.SpinEdit1.Value*1000;	end;  if ParamCount > 0 then	begin	 while paramstr(I)<>'' do		begin		CriaNovaAba(PageControl1);	   richativo.Lines.LoadFromFile(paramstr(i));		  PageControl1.ActivePage.Caption:=paramstr(i);		 richativo.setfocus;		  tbquebralinha.Down:=richativo.WordWrap;		 richativo.ScrollBars:=ssboth;		  inc(I);		end;	end  else	begin	  CriaNovaAba(PageControl1);	end;  SaveDialog1.Filter:=OpenDialog1.Filter;  StatusBar1.Panels[4].Text:=timetostr(now);  StatusBar1.Panels[3].Text:=datetostr(now);  janelaprincipal.Caption:='PSYWARE - PSYpad ['+nomearquivo(PageControl1.ActivePage.Caption)+']';  Refresh;

 

Tá dando access violation area. alguém consegue ter uma idéia do que seja?

 

 

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro ocorre nessa linha:

frmopcoes.CheckBox1.Checked:=registro.ReadBool('fade');
comentei ela e gerou outro erro...

O executável compilado pode ser encontrado no site psygames.byethost10.com , seção projetos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que o erro não é por não existir a chave no registro ainda? E se colocar validação sempre antes:

 

frmopcoes.CheckBox1.Checked:=False;if registro.KeyExists('\Software\PSYWARE\PSYpad\fade') then	frmopcoes.CheckBox1.Checked:=registro.ReadBool('fade');

Sempre que mexi com registro utilizei somente String... os boolean não sei muito bem como funciona...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe não ter respondido mais cedo...

 

Meu OnCreate tá assim agora (funcionando)...

procedure Tjanelaprincipal.FormCreate(Sender: TObject);var	i:integer;begin  I:=1;//  DoubleBuffered:=true;  DragAcceptFiles( Handle,True );  tabulacao:='	';  Abas2.Checked:=true;	frmtx:=janelaprincipal.Width;  frmty:=janelaprincipal.Height;  Registro := TRegistry.Create;  Registro.RootKey := HKEY_CURRENT_USER;  if not (registro.KeyExists('\Software\PSYWARE\PSYpad')) then	begin	  Registro.OpenKey('\Software\PSYWARE\PSYpad', true);	  registro.writeBool('fade',true);	  registro.writeBool('toolbar',true);	  registro.writeBool('statusbar',true);	  registro.writeBool('alwaysontop',false);	  registro.writeBool('linebreak',false);	  registro.writeBool('fullscreen',false);	  registro.writeBool('hidetotray',false);	  registro.writeBool('multiplewindows',true);	  registro.writeBool('linkpanel',false);	  registro.writeBool('backup',false);	  registro.writeInteger('backuptime',5);	  registro.WriteString('fontname','Courier New');	  registro.WriteInteger('fontsize',10);	  registro.WriteInteger('fontcolor',$000000);	  registro.CloseKey;	end;  Registro.OpenKey('\Software\PSYWARE\PSYpad', false);  if registro.ReadBool('fade') then	AnimateSafe(Handle, 500, AW_BLEND or AW_ACTIVATE);  ToolBar1.Visible:=registro.ReadBool('toolbar');  PageScroller1.Visible:=registro.ReadBool('toolbar');  StatusBar1.Visible:=registro.ReadBool('statusbar');  if registro.ReadBool('alwaysontop') then	begin	  janelaprincipal.FormStyle:=fsStayOnTop;	  Sempreporcima1.Checked:=true;	end;  if registro.ReadBool('backup') then	begin	  Timer2.Enabled:=true;	  Timer2.Interval:=registro.ReadInteger('backuptime')*1000;	end;  if ParamCount > 0 then	begin		while paramstr(I)<>'' do		begin			  CriaNovaAba(PageControl1);				richativo.Lines.LoadFromFile(paramstr(i));		  PageControl1.ActivePage.Caption:=paramstr(i);		  tbquebralinha.Down:=richativo.WordWrap;			richativo.ScrollBars:=ssboth;		  inc(I);		end;	end  else	begin	  CriaNovaAba(PageControl1);	end;  SaveDialog1.Filter:=OpenDialog1.Filter;  StatusBar1.Panels[4].Text:=timetostr(now);  StatusBar1.Panels[3].Text:=datetostr(now);  janelaprincipal.Caption:='PSYWARE - PSYpad ['+ExtractFileName(PageControl1.ActivePage.Caption)+']';  Refresh;end;

Já tem uns dias que resolvi..

...acho que era por culpa dos closekey que não tinha antes...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.