Duvidas com limite de tentativas
Eu queria que o usuario so pudesse tentar umas 3x para indicar o caminho do banco de dados...
só que eu tentei um monte de rotinas mas nao consegui... se voces puderem me ajudar eu agradesço
o codigo eh o seguinte
só que eu tentei um monte de rotinas mas nao consegui... se voces puderem me ajudar eu agradesço
o codigo eh o seguinte
procedure TFrmApresentacao.FormActivate(Sender: TObject); Var x : string; base: string; begin memo1.Lines.LoadFromFile(´c:\arquivos de programas\ellas\nvocc\nvocc.ini´); x:=Copy(memo1.Lines[1],9,100); if x = ´Vazio´ then begin showmessage(´Seja bem Vindo!!!´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); FrmConfiguracao.showmodal; FormActivate(Sender); end else if not FileExists(x) then begin Showmessage(´Nao foi possivel conectar ao banco de dados´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); FrmConfiguracao.showmodal; FormActivate(Sender); end else try begin base := ´Provider=Microsoft.Jet.OLEDB.4.0´ + ´;Data Source=´ + x + ´;Persist Security Info=False´; adoconnection1.connectionString:= base; AdoConnection1.Connected := True; end except begin showmessage(´Erro ao conectar com o banco de dados´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); FrmConfiguracao.showmodal; FormActivate(Sender); end end; timer1.Enabled:=True; end;
Fernando_cunha
Curtidas 0
Respostas
Rjun
01/09/2005
O que você não conseguiu? O que essa sua rotina faz?
GOSTEI 0
Fernando_cunha
01/09/2005
como diria jack estripador... vamos por partes...
esta parte do codigo le o arquivo ini.
Se no arquivo ini estiver escrito vazio, é porque é a primeira vez que é executado o programa. e abre a tela de configuracao para colocar o caminho do banco de dados no ini.
Se no Ini estiver qualquer caminho la eu verifico se este caminho é valido para que nao de problema ao abrir o programa
Se ele nao entrou em nenhuma das condicoes acima, ou seja nao é a primeira vez que abre o programa, e o caminho que esta no ini existe, ai eu tento conectar ao banco de dados... se nao conectar ai da erro...
e se passar das 3 condicoes, ele coloca em enable o timer1 que da loading nos forms e abre o FrmPrincipal.
e o que eu preciso é que quando o usuario foi la e colocou o caminho no ini ex: c:\temp\123, logico que o programa vai dar erro... ai queria que o cara so pudesse tentar indicar o banco de dados umas 3 vezes... ai depois das 3 tentativas ele da um application.terminate sei la... eu ja tentei algumas coisas e nao consegui por isso to postando aqui.
obrigado pela ajuda por enquanto.
esta parte do codigo le o arquivo ini.
memo1.Lines.LoadFromFile(´c:\arquivos de programas\ellas\nvocc\nvocc.ini´); x:=Copy(memo1.Lines[1],9,100);
Se no arquivo ini estiver escrito vazio, é porque é a primeira vez que é executado o programa. e abre a tela de configuracao para colocar o caminho do banco de dados no ini.
if x = ´Vazio´ then begin showmessage(´Seja bem Vindo!!!´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); FrmConfiguracao.showmodal; FormActivate(Sender); end
Se no Ini estiver qualquer caminho la eu verifico se este caminho é valido para que nao de problema ao abrir o programa
if not FileExists(x) then begin Showmessage(´Nao foi possivel conectar ao banco de dados´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); FrmConfiguracao.showmodal; FormActivate(Sender); end else
Se ele nao entrou em nenhuma das condicoes acima, ou seja nao é a primeira vez que abre o programa, e o caminho que esta no ini existe, ai eu tento conectar ao banco de dados... se nao conectar ai da erro...
try begin base := ´Provider=Microsoft.Jet.OLEDB.4.0´ + ´;Data Source=´ + x + ´;Persist Security Info=False´; adoconnection1.connectionString:= base; AdoConnection1.Connected := True; end except begin showmessage(´Erro ao conectar com o banco de dados´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); FrmConfiguracao.showmodal; FormActivate(Sender);
e se passar das 3 condicoes, ele coloca em enable o timer1 que da loading nos forms e abre o FrmPrincipal.
e o que eu preciso é que quando o usuario foi la e colocou o caminho no ini ex: c:\temp\123, logico que o programa vai dar erro... ai queria que o cara so pudesse tentar indicar o banco de dados umas 3 vezes... ai depois das 3 tentativas ele da um application.terminate sei la... eu ja tentei algumas coisas e nao consegui por isso to postando aqui.
obrigado pela ajuda por enquanto.
GOSTEI 0
Martins
01/09/2005
Sei não companheiro, mas, acho q vc terá q rever seu código, pq se vc quer aquele velho laço onde existem as tentativas, onde ele incrementa um número em uma variavel inteira e é checado por uma instrução condicional para quando for maior ou igual a 3, ele disparar um evento, vc terá q rever esse código aí.
GOSTEI 0
Fernando_cunha
01/09/2005
Eu a primeiro instante pensei no seguinte... antes de tudo eu fazer um if mais ou menos assim ...
varivel : = 1;
if Variavel < 4 then
ai faz todas estas rotinas. ....
..
...
....
else
application.terminate;
pois como todos estes codigos sao no evento onactivate e 3 condicoes ´malucas´ minha sempre chama o formactivate(sender) ... mas nao deu certo ... provavelmente eu errei em alguma coisa ou entao como voce disse : terei que ver direito este codigo
varivel : = 1;
if Variavel < 4 then
ai faz todas estas rotinas. ....
..
...
....
else
application.terminate;
pois como todos estes codigos sao no evento onactivate e 3 condicoes ´malucas´ minha sempre chama o formactivate(sender) ... mas nao deu certo ... provavelmente eu errei em alguma coisa ou entao como voce disse : terei que ver direito este codigo
GOSTEI 0
Martins
01/09/2005
como diria jack estripador... vamos por partes...
esta parte do codigo le o arquivo ini.
Se no arquivo ini estiver escrito vazio, é porque é a primeira vez que é executado o programa. e abre a tela de configuracao para colocar o caminho do banco de dados no ini.
Se no Ini estiver qualquer caminho la eu verifico se este caminho é valido para que nao de problema ao abrir o programa
Se ele nao entrou em nenhuma das condicoes acima, ou seja nao é a primeira vez que abre o programa, e o caminho que esta no ini existe, ai eu tento conectar ao banco de dados... se nao conectar ai da erro...
e se passar das 3 condicoes, ele coloca em enable o timer1 que da loading nos forms e abre o FrmPrincipal.
e o que eu preciso é que quando o usuario foi la e colocou o caminho no ini ex: c:\temp\123, logico que o programa vai dar erro... ai queria que o cara so pudesse tentar indicar o banco de dados umas 3 vezes... ai depois das 3 tentativas ele da um application.terminate sei la... eu ja tentei algumas coisas e nao consegui por isso to postando aqui.
obrigado pela ajuda por enquanto.
memo1.Lines.LoadFromFile(´c:\arquivos de programas\ellas\nvocc\nvocc.ini´); x:=Copy(memo1.Lines[1],9,100);
if x = ´Vazio´ then begin showmessage(´Seja bem Vindo!!!´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); FrmConfiguracao.showmodal; FormActivate(Sender); end
if not FileExists(x) then begin Showmessage(´Nao foi possivel conectar ao banco de dados´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); FrmConfiguracao.showmodal; FormActivate(Sender); end else
try begin base := ´Provider=Microsoft.Jet.OLEDB.4.0´ + ´;Data Source=´ + x + ´;Persist Security Info=False´; adoconnection1.connectionString:= base; AdoConnection1.Connected := True; end except begin showmessage(´Erro ao conectar com o banco de dados´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); FrmConfiguracao.showmodal; FormActivate(Sender);
Certo então vamos ver somente a parte onde o usuário irá indicar o caminho para conexão com seu Banco, eh na tela de configuração do sistema?
pq se for é só vc ver, ele digita uma vez aí pede pra conectar, o caminho é inválido, tem uma var q recebe um valor no caso [b:b2d4c96ea5]1[/b:b2d4c96ea5], tenta novamente, incrementa +1, e lá tem q haver um if..then ..else.. para verificar se tentativa > 3 então Contate o suporte, pq suas tentativas de config . o sistema se esgotaram.
+/- isso, não sei bem como vc tá fazendo.
Martins
GOSTEI 0
Martins
01/09/2005
procedure TFrmxxx.ButtonxxxClick(Sender: TObject); begin if x < 4 then begin if Edit1.Text = ´Teste´ then begin ShowMessage(´Teste hehehe ´+IntToStr(x)); end else X:= X + 1; end else ShowMessage(´Vc já esgotou toda a minha paciência!!´); end;
Só um exemplo de como a instrução condicional ficaria, x sendo uma var publica.
GOSTEI 0
Fernando_cunha
01/09/2005
eu consegui... só que foi uma gambiz neh...
veja o codigo...
e na tela Frmconfiguracao eu coloquei o seguinte
Funcionou ... esta uma solução meio ´porca´ mas esta funcionando... qualquer coisa eu tento um codigo mais limpo... ta muito enrolado ele.... mas funciona... valeu pessoal...
veja o codigo...
begin if memo1.Tag < 4 then begin if timer1.Tag <> 2 then begin memo1.Lines.LoadFromFile(´c:\arquivos de programas\ellas\nvocc\nvocc.ini´); x:=Copy(memo1.Lines[1],9,100); if x = ´Vazio´ then begin showmessage(´Seja bem Vindo!!!´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); timer1.tag:= 1; FrmConfiguracao.showmodal; FormActivate(Sender); end else if not FileExists(x) then begin Showmessage(´Nao foi possivel conectar ao banco de dados´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); timer1.tag:= 1; FrmConfiguracao.showmodal; FormActivate(Sender); end else try begin base := ´Provider=Microsoft.Jet.OLEDB.4.0´ + ´;Data Source=´ + x + ´;Persist Security Info=False´; adoconnection1.connectionString:= base; AdoConnection1.Connected := True; end except begin showmessage(´Erro ao conectar com o banco de dados´); Application.CreateForm(TFrmConfiguracao, FrmConfiguracao); timer1.tag:= 1; FrmConfiguracao.showmodal; FormActivate(Sender); end end; timer1.Enabled:=True; end else application.Terminate; end else Showmessage( ´ voce tentou 3 vezes ´ ); application.Terminate; end;
e na tela Frmconfiguracao eu coloquei o seguinte
if FrmApresentacao.memo1.Tag <> 4 then Frmapresentacao.Memo1.Tag := Frmapresentacao.Memo1.Tag + 1
Funcionou ... esta uma solução meio ´porca´ mas esta funcionando... qualquer coisa eu tento um codigo mais limpo... ta muito enrolado ele.... mas funciona... valeu pessoal...
GOSTEI 0