MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Argumento em Function se torna clone

    DaviSilva
    DaviSilva
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 44
    Registrado : 26/09/2013

    [Resolvido]Argumento em Function se torna clone Empty [Resolvido]Argumento em Function se torna clone

    Mensagem  DaviSilva 20/9/2016, 02:36

    Bom, apesar do titulo do tópico ser estranho, vou explicar.

    Tenho duas funções onde cada uma faz uma verificação de  arquivos no sistema.

    Código:
    Function instalacaoMws(strCam As String) As Boolean
        
        strCam = strCam & "\MWSPlay.exe"

    End Function
    _______________________________________________

    Function versaoMws(caminho As String) As String
        
        caminho = caminho & "\MagicWorkstation.exe"

    End Function
    _______________________________________________

    Sub testeArg()

        Dim bln As Boolean
        Dim arg As String, str As String

        arg = "Teste"

        bln = instalacaoMws(arg)
        str = versaoMws(arg)

        MsgBox arg
        
    End Sub

    As duas estão em um modulo de formulário.
    Chamo uma depois da outra em um botão.

    O valor de [strCam] que foi manipulado na função 1, fica armazenado na variavel [arg]. Quando chamo a segunda função o valor já não é mais ["Teste"] e sim ["Teste\MWSPlay.exe"].

    O Nome dos argumentos em cada função eram os mesmo. Então imaginei que o problema seria este. Troquei os nomes, mas o valor manipulado ainda esta retornando o seu valor para a variavel [arg].

    Eu até sei que se eu fizer [arg = "Teste"] antes de chamar cada função, resolve meu problema. Mas como sou daquelas pessoas que gostam de entender o porque das coisas, eis a questão.

    Alguém sabe me dizer porque a minha variável [arg] esta recebendo um valor que eu NÂO setei dentro da primeira função?

    Acredito que [Arg] e [strCam] da primeira função se tornaram um só. Se é que isso é possível e eu não esteja falando besteira.
    Gabriel Brunichaki
    Gabriel Brunichaki
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 138
    Registrado : 11/12/2015

    [Resolvido]Argumento em Function se torna clone Empty Re: [Resolvido]Argumento em Function se torna clone

    Mensagem  Gabriel Brunichaki 27/9/2016, 15:37

    Bom dia,

    Tente acrescentar ByVal antes dos parâmetros. Ex:

    Function instalacaoMws(ByVal strCam As String) As Boolean
       
       strCam = strCam & "\MWSPlay.exe"

    End Function
    _______________________________________________

    Function versaoMws(ByVal caminho As String) As String
       
       caminho = caminho & "\MagicWorkstation.exe"

    End Function


    .................................................................................
    “Não podemos solucionar problemas usando a mesma forma de raciocínio que usamos quando os criamos.”
    – Albert Einstein
    DaviSilva
    DaviSilva
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 44
    Registrado : 26/09/2013

    [Resolvido]Argumento em Function se torna clone Empty Resolvido!

    Mensagem  DaviSilva 27/9/2016, 20:14

    Mais uma vez muito obrigado pelo retorno. Funcionou perfeitamente e ainda entendi o porque.

    Após testar a sintaxe que o Gabriel Brunichaki me passou, fui buscar no ajuda do próprio Access para tentar entender o funcionamento. Eis que obtive isto:

    ByVal
    Uma forma de passar o valor de um argumento a um procedimento em vez de passar o endereço. Permite que o procedimento acesse uma cópia da variável. Como resultado, o valor real da variável não pode ser alterado pelo procedimento ao qual é passado.

    ByRef
    Uma forma de passar o endereço de um argumento a um procedimento em vez de passar o valor. Isso permite que o procedimento acesse a variável real. Como resultado, o valor real da variável pode ser alterado pelo procedimento ao qual é passado. A menos que especificado o contrário, os argumentos são passados por referência.

    Optional
    Opcional. Indica que um argumento não é obrigatório. Se usado, todos os argumentos subseqüentes em arglist deverão ser opcionais e declarados através da palavra-chave Optional. Optional não pode ser usado para qualquer argumento se ParamArray for usado.

    ParamArray
    Opcional. Usada apenas como o último argumento em arglist para indicar que o argumento final é uma matriz Optional de elementos Variant. A palavra-chave ParamArray permite que você forneça um número arbitrário de argumentos. Ela não pode ser usada com ByVal, ByRef ou Optional.

    Muito obrigado, espero que essa informação possa ajudar outras pesoas.

    Conteúdo patrocinado


    [Resolvido]Argumento em Function se torna clone Empty Re: [Resolvido]Argumento em Function se torna clone

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/3/2024, 08:12