SUB OU SEU ENDERECO COMO PARAMETRO DE OUTRO SUB
é possÃvel passar um sub (na verdade, seu endereço) como parâmetro de outro de sub?
Citação::
Explique melhor o que você precisar fazer ?
Bem resumidamente, seria algo assim:
Private Sub Command1_Click()
If Condicao Then
Calcular Somar
Else
Calcular Subtrair
End
End Sub
Private Sub Calcular(ParamSub)
ParamSub
End Sub
Private Sub Command1_Click()
Msgbox Calcular (Somar)
Msgbox Calcular (Subtrair)
End Sub
Private Sub Calcular(ParamSub) as string
If ParamSub = [Ô]Somar[Ô] Then
Calcular = 1+1
elseif ParamSub = [Ô]Subtrair[Ô] Then
Calcular = 1/1
else
Calcular = 1
End if
End Sub
Veja se é isso.
Citação::
Sim, é possÃvel
Private Sub Command1_Click()
Msgbox Calcular (Somar)
Msgbox Calcular (Subtrair)
End Sub
Private Sub Calcular(ParamSub) as string
If ParamSub = [Ô]Somar[Ô] Then
Calcular = 1+1
elseif ParamSub = [Ô]Subtrair[Ô] Then
Calcular = 1/1
else
Calcular = 1
End if
End Sub
Veja se é isso.
amigão sua resposta está correta apenas a ultima parte que não é sub e sim function, porque sub não retorna valor apenas funcion
Function Calcular(ParamSub) As String
If ParamSub = [Ô]Somar[Ô] Then
Calcular = 1 + 1
ElseIf ParamSub = [Ô]Subtrair[Ô] Then
Calcular = 1 / 1
Else
Calcular = 1
End If
End Function
Citação::
Sim, é possÃvel
Private Sub Command1_Click()
Msgbox Calcular (Somar)
Msgbox Calcular (Subtrair)
End Sub
Private Sub Calcular(ParamSub) as string
If ParamSub = [Ô]Somar[Ô] Then
Calcular = 1+1
elseif ParamSub = [Ô]Subtrair[Ô] Then
Calcular = 1/1
else
Calcular = 1
End if
End Sub
Veja se é isso.
Agradeço, amigo, mas infelizmente não é tão simples. O exemplo que eu passei é só uma ideia muito resumida do que eu preciso.
Eu preciso mesmo passar os Subs (ou seus endereços) como parâmetro, inclusive porque eles estão em outro módulo.
Explicando melhor: estou fazendo uma classe que vai ser usada por mim e por outros programadores. A classe tem um método que deve chamar um Sub que está fora dela, de acordo com algumas condições. Só que cada programador vai definir seu próprio Sub a ser chamado. Eu posso defnir meu Sub como Somar enquanto outro programador poderá definÃ-lo como Subtrair. Então o método da classe deve chamar o Sub que o programador passar cono parâmetro.
Tem alguma ideia de como fazer isso em VB?
http://stackoverflow.com/questions/4169028/how-to-write-a-callback-in-vb6
Simples,crie uma sub que receba parametros,e faça as operaçoes que desjesa
sub calc(ptipo as integer)
select case ptipo
case 1
soma
case 2
subtração
case 3
multiplicação
end sub
esse é um metodo bem simples e bastante funcional
Porque voce nao migra pra vb net?
uma linguagem 100% orientada a objetos,la os conceitos de oop são bem mais implementados,
no seu caso o uso do poli-morfismo,herança iria ajudar bastante,voce poderia fazer o uso de overrides,
na minha opiniao seria bem melhor,
vb6 ja esta defasado.
Citação::
Pra que complicar?
Simples,crie uma sub que receba parametros,e faça as operaçoes que desjesa
sub calc(ptipo as integer)
select case ptipo
case 1
soma
case 2
subtração
case 3
multiplicação
end sub
esse é um metodo bem simples e bastante funcional
Amigo, você acha que eu quero complicar?
Acho que você não leu minhas mensagens anteriores.
Citação::
Detalhe,
Porque voce nao migra pra vb net?
uma linguagem 100% orientada a objetos,la os conceitos de oop são bem mais implementados,
no seu caso o uso do poli-morfismo,herança iria ajudar bastante,voce poderia fazer o uso de overrides,
na minha opiniao seria bem melhor,
vb6 ja esta defasado.
Acho que vou dar o telefone do meu patrão para você.
Quem sabe você o convence?