Ir para conteúdo

Arquivado

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

Muskt

Problemas com MessageBox

Recommended Posts

Olá a todos,Estou com um problema que ja está me tirando do serio. Uso o Delphi 7 e tenho esse procedimento em meu programa:procedure TfrmSplashScreen.PegarConf;varRegistro: TRegistry;beginRegistro := TRegistry.Create;Registro.RootKey := hkey_local_machine;if (not Registro.OpenKey('software\Tasks2Do', false))then beginRegistro.OpenKey('software\Tasks2Do', True);if Application.MessageBox('Você gostaria de personalizar as configurações agora ?', 'Tasks2Do', MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON1) = ID_YESthen Application.MessageBox('Criar form de cfg', 'Tasks2Do', MB_OK)else beginRegistro.WriteBool('MultiCliente', False);Registro.WriteBool('Lembrarme', False);Registro.WriteBool('Rodando', False);end;end;cfgMultiCliente := Registro.ReadBool('MultiCliente');cfgRodando := Registro.ReadBool('Rodando');Registro.CloseKey;Registro.Free;end;Qndo a aplicação chega na linha : if Application.MessageBox('Você gostaria de personalizar as configurações agora ?', 'Tasks2Do', MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON1) = ID_YES ela volta até a linha: Registro.RootKey := hkey_local_machine; e não exibe o messagebox. Alguem tem alguma ideia ? Alguem poderia testar e me falar se funcionou ?Sem mais, abraços !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não poderia, o que achei mais estranho foi a questão de retornar para linhas acima, isso não teria como acontecer... não tem como rodar passo-a-passo e ver o que acontece... ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso quando rodar diretamente pelo .exe funciona ?

Tenta desmarcar o seguinte parametro no delphi... Vai em Tools -> Debugger Options -> Language Exceptions e desmarca a opção Stop on delphi exceptions, e veja se funciona... Pode ainda mudar o seu fonte na validação, fazendo:

 

procedure TfrmSplashScreen.PegarConf;var	Registro: TRegistry;beginRegistro := TRegistry.Create;Registro.RootKey := hkey_local_machine;if (not Registro.OpenKey('software\Tasks2Do', false)) then	begin	Registro.OpenKey('software\Tasks2Do', True);	if Application.MessageBox('Você gostaria de personalizar as configurações agora ?', 'Tasks2Do', MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON1) = mrYes then		Application.MessageBox('Criar form de cfg', 'Tasks2Do', MB_OK)	else		begin		Registro.WriteBool('MultiCliente', False);		Registro.WriteBool('Lembrarme', False);		Registro.WriteBool('Rodando', False);		end;	end;cfgMultiCliente := Registro.ReadBool('MultiCliente');cfgRodando := Registro.ReadBool('Rodando');Registro.CloseKey;Registro.Free;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando rodo direto do exe o que ocorre é o seguinte:1º ele mostra a messagebox correta2º dps ele mostra n caixas de erro falando q não conseguiu recuperar os dados que eu pedi.Pra sair tenho q usar crtl + alt + del ...Desculpe a falta de exatidão, mais é por que estou na faculdade agora e aqui não tenho o projeto.Uma duvida que me ocorreu agora:Estou usando o access 2007 nesse projeto, para eu rodar em outras maquinas tem como eu copiar/instalar apenas os drivers de conexão ADO ou tenho que instalar o access 2007 na maquina ?Obrigado da atenção, chegando em casa dou mais detalhes das mensagens de erro.[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok. Quanto ao access não sei lhe dizer ao certo, nunca usei ele como BD desta forma, teria que testar mesmo.Veja então na sua casa o que mais pode estar influenciando no seu projeto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descobri !Desculpe a demora mais hoje descobri o problema !!O negocio é o seguinte, a chamada estava em um timer e a solução foi simples, só mandar desativar o timer antes de entrar no procedimento.Agora se souber o negocio do access fico grato ![]'s, obrigado da atenção/ajuda e até mais !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza... Bom que encontrou o problema...

 

Para o access, pelo princípio seria necessário ter o driver Microsoft Access Driver para conseguir acessar... como você montou a sua string de conexão ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande Marcio !

 

Então, a conexão é a seguinte:

 

Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=.\Tasks2Do.bdd;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False

Só que o problema é o seguinte estou usando Access 2007 e o provedor dele do ADO é diferente das demais versões. Tentei abrir o projeto numa maquina com Delphi 6 (Uso o 7) e sem Access instalado e deu um erro falando que ele não achou o provedor. Minha duvida é se existe um jeito de instalar so o provedor sem instalar o Access (o que eu axo que resolveria o problema). Sei lá .. talvez criando um instalador ... espero sujestoes.

 

[]'s !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei usar o MDAC mais não deu, alem de tudo o MDAC 2.8 SP1 distribui os mesmos DA que vem no WinXP SP2 :(Vou tertar usando o OLE então ... dps dou uma nova posição

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.