Ir para conteúdo
Fórum Script Brasil
  • 0

Vb - Me Ajudem!


Guest - Paulo -

Pergunta

Guest - Paulo -

Criei um programa e no form_load() dele coloquei o seguinte código:

Dim VAR As integer

VAR = 0

Dim Reg As Object

Set Reg = CreateObject("wscript.shell")

Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\Programa\" & "CArquivo", VAR

Ou seja, esse código salva a variavel VAR em uma chave no registro...

O meu problema é o seguinte, essa variavel VAR pode ser mudada pelo usuario no programa,e quando ele muda essa variavel, o valor no registro tambem muda...

Só que quando ele abrir o programa de novo, a variavel VAR vai voltar a ser igual a 0 (ZERO), por causa do codigo que eu coloquei no form_load().

Eu gostaria de saber se há algum jeito, ou código, (se eu tenho que usar algum módulo, ou coisa parecia), para que o código que escreve a chave com a variavel no registro seja executada só uma vez. E o usuario depois de mudar a variavel, e executar novamente o programa,a variavel seja a mesma que ele tinha definido na ultima vez que usou o programa...

Se tiver algum jeito por favor!!! me expliquem, enviando um código como exemplo...pois não sou um expert em VB..

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
Guest - Paulo -

Não foi isso que eu perguntei...

mesmo porque desse jeito que você falou não iria dar certo, pois no form load eu estou falando que var=0 e que é para gravar var no registro

ou seja, toda vez que o programa e iniciado é gravado var=0 no registro do windows,,,,,

Link para o comentário
Compartilhar em outros sites

  • 0
Não foi isso que eu perguntei...

mesmo porque desse jeito que você falou não iria dar certo, pois no form load eu estou falando que var=0 e que é para gravar var no registro

ou seja, toda vez que o programa e iniciado é gravado var=0 no registro do windows,,,,,

Mas, então por que você deixa a gravação no registro nesta rotina? O VB é orientado a eventos, portanto *você* define em *qual* evento tal coisa deve ser executada. Se você não quer que isso seja gravado durante a inicialização do programa (ou seja, o evento Load), basta mudar para onde você quer que seja (o evento Click de um botão, o evento Change de uma TextBox ou de uma ComboBox, etc.). Se o usuário pode mudar isso durante a execução do programa, não seria sensato ter um botão onde ele pudesse *confirmar* o novo valor? Então, neste botão entraria o código.

Mas, vale atentar para outra coisa, uma vez que aquele código todo está no evento Load: a variável declarada ali é local, ou seja, ela deixará de existir após a rotina terminar. Não adiantará tentar gravar o valor de VAR em qualquer outra rotina, uma vez que ela não existirá mais. Para que ela exista em qualquer lugar, declare-a em um módulo. Para que ela exista em qualquer lugar do form, você pode ainda, declará-la no General Declarations.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Como vocÊ disse que o VB é orientado a eventos, portanto *você* define em *qual* evento tal coisa deve ser executada,

Eu queria que ocorresse um evento somente quando você abrisse o programa pela primeira vez.......

e depois esse evento nunca mais voltasse a ser executado...

entendeu??

Link para o comentário
Compartilhar em outros sites

  • 0

Não há um evento que funcione dessa maneira, mas você pode simplesmente tentar ler a chave e se não der certo é porque é a primeira que o programa está sendo executado. Veja:

on error resume next
v=Reg.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\Programa\CArquivo")
if err.number<>0 then
  msgbox "É a primeira vez!"
  Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\Programa\CArquivo", VAR
else
  msgbox "Não é a primeira vez!"
endif
on error goto 0

Entendeu? Ele vai tentar ler a chave, e se ele conseguir é porque não é a primeira vez que o programa está sendo executado (já que da primeira vez ele *grava* a chave). Se ele não conseguir ler ele exibirá a mensagem de que é a primeira vez e *gravará* a chave (para que das próximas vezes ele consiga ler e detectar que não é a primeira vez). Note que o valor lido pode nem te interessar, o que importa é saber se ele conseguiu ler ou não (o que sinaliza se é a primeira vez ou não). Seria isso?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...