Ir para conteúdo

POWERED BY:

Arquivado

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

mkoch

Sub com passagem de parâmetros

Recommended Posts

Estou tendo um pouco de dificuldade para fazer uma sub como abaixo

ASP

[*]

 

[*]Sub Inc(ByRef Valor, ByVal Def = 1) 'Quero que Def = 1 sejza o valor Padrão

 

[*] Valor = Valor + Def

 

[*]End Sub

 

[*]

 

[*]'Ao chamar a Sub ex:

 

[*]Dim Num

 

[*]Num = 100

 

[*]Inc(Num, 10)

 

[*]'O resultado deveria ser 110

 

[*]'Mas da erro dizendo que uma Sub não pode ter Parenteses

 

[*]

Erro de compilação do Microsoft VBScript (0x800A0414)Não é possível usar parênteses ao chamar um Sub/asp/sub/sub1.asp, line 30, column 13Inc(Num1, 10)------------^
Pergunto:

Como utilizar as Sub com Passagem de Parâmetros por valor e por referência e com algum dos parametros com valor padrão se o usuário não passar valor nenhum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim<%Sub Inc(ByRef Valor, ByVal Def) Valor = Valor + DefEnd SubDim nn = 1Call Inc(n, 10)response.write n%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai dar o mesmo erro...quando se chama uma SUB em asp não se coloca parenteses:

ASP

[*]

 

[*]Sub Inc(ByRef Valor, ByVal Def)

 

[*]Valor = Valor + Def

 

[*]End Sub

 

[*]

 

[*]Dim n

 

[*]n = 1

 

[*]

 

[*]Call Inc n, 10

 

[*]

 

[*]response.write n

 

[*]

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Normalmente uma Sub não é usada para retornar um valor, mas sim realizar outras rotinas como excluir registros ou enviar emails. Você pode passar valores para uma Sub mas sem usar parenteses. Para esse caso o mais certo é usar uma Function, que aceita parenteses sem problemas:

 

ASP

[*]Function Inc(ByRef Valor, ByVal Def = 1)

 

[*] Inc = Valor + Def

 

[*]End Function

 

[*]

 

[*]'Ao chamar a Function:

 

[*]Dim Num

 

[*]Num = 100

 

[*]Valor Inc(Num, 10)

 

[*]Response.Write Valor

 

T+

B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O amigo 'rOcKLoCo' tem razão, usando o Call Inc(Num, 1) funciona, não da erro algum.

Dúvida: Em uma sub no seu cabeçalho posso ter um padrão no caso de um usuário não passar nenhum valor?

ex.:

ASP

[*]

 

[*]Sub Inc(ByRef Valor, ByVal Def = 1)

 

[*] Valor = Valor + Def ' Se o usuário não passar nada para o param Def ele assume o valor 1

 

[*]End Sub

 

[*]

Compartilhar este post


Link para o post
Compartilhar em outros sites

nunca testei isso mas creio que vai dar erro.. não eh que nem java que tem os construtores...

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem.na hora em que você chamar a função, você é obrigado a passar uma variavel na chamada, senão dá erro de sintaxe.daí.. dentro da função, você captura o valor passado.. e testa se é vazio.se for vazio.. você deixa um valor padrao..isso teoricamente funfa..

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.