Jump to content
User LoL

Criando função em uma classe

Recommended Posts

User LoL

Como eu faço para criar uma função em uma classe, tendo em vista que estou fazendo referencia a objetos que ainda não existem, que so serão criados depois no form, como textbox. A função é essa:

If textbox1.Text = "teste1" Then
textbox2.Text = "1"
textbox3.Text = "1"
End If
If textbox1.Text = "teste2" Then
textbox2.Text = "2"
textbox3.Text = "2"
End If

Já tentei colocar por exemplo: Dim textbox1 as textbox, mas não da certo. Eu preciso criar essa função na classe, para depois eu usar ela no form ai quando eu for fazer uma atualização so substituo a dll que sera gerada da classe.

Edited by User LoL

Share this post


Link to post
Share on other sites
nelsonr

Não dá para perceber muito bem o que pretendes.

No entanto, talvez possas passar as textboxs por parametro como referencia para dentro do método da class que vai precisar de mexer nelas.

Share this post


Link to post
Share on other sites
ribeiro55

Exacto, passa as textbox por parâmetros ByRef.

Public Sub FazerQQCoisa(ByRef textbox1 As TextBox, ByRef textbox2 As TextBox)
If textbox1.Text = "teste1" Then
	textbox2.Text = "1"
	textbox3.Text = "1"
End If
If textbox1.Text = "teste2" Then
	textbox2.Text = "2"
	textbox3.Text = "2"
End If
End Sub

Edited by ribeiro55

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
User LoL

ByRef não funcionou, troquei por ByVal, um detalhe é que a dll é de um projeto de livraria de classes, e não de um projeto windows forms, vou gerar uma dll e depois referenciar ela em outros projetos, ficou mais ou menos assim:

Public textbox2 As String
   Public textbox3 As String
   Public Sub SuaFuncao(ByVal textbox1 As String)
If textbox1 = "teste" Then
	    textbox2 = "1"
	    textbox3 = "1"
    End If
End Sub
End Class

Agora,uma questão é, como proteger essa dll? Depois de gerada eu abri com o notepad, e consegui compreender boa parte do código, como o "teste1" e o "1" fica totalmente explicito, não há maneiras de proteger a dll ou ofuscar o código?

Share this post


Link to post
Share on other sites
nelsonr

Depende do que pretendes com esses textos, mas talvez possas encriptar o conteúdo ou mesmo gerar um hash, de modo a não ter o texto explicito.

Depois na comparação em vez de comparares com o texto simples, comparas com o hash esperado.

Share this post


Link to post
Share on other sites
ribeiro55

Não interessa se é uma DLL. Carregando referências às Forms conseguias ter TextBoxes disponíveis se fosse mesmo necessário.

O principal problema aqui, e que não quis mencionar antes, é o facto de estares a operar sobre TextBoxes e não sobre Strings, que curiosamente foi a "solução" a que chegaste.

ByRef seria necessário se tivesses de operar o objecto TextBox dentro da classe, mas aparentemente estás a operar Strings e deves estar a enviar como parâmetro o TextBox.Text e a esperar que volte para trás... não volta.

Abrir a DLL no notepad não te vai mostrar rigorosamente nada da tua lógica. Apenas das tuas assinaturas.

Ou seja, cinge-te às regras de encapsulamento de classes e nada de importante é revelado.

Utiliza também atributos Debbuggerhidden (escrevi um artigo para a Wiki da comunidade. Procura por lá) para evitar que o debugger ande lá para dentro.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
User LoL

Dei uma olhada la, e também pensei em usar um hash, vou ver ainda qual se encaixa melhor no meu projeto. Agora me veio uma ideia meio que estranha, pensei em "exportar" para uma dll todas as opções e propriedades de um MenuStrip, tipo,colocar na dll as opções "arquivo" "novo" etc... Depois eu poderia implementar uma função extra na dll sem ter que abrir o projeto windows forms e modificar manualmente. Alguma sugestão de como fazer isso? e é seguro? pois isso permitiria incluir códigos maliciosos na aplicação

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.