DLL - SO PARA OS FERRAS

USUARIO.EXCLUIDOS 02/06/2007 01:37:56
#219440
Citação:

EDILSON BRANDAO escreveu:
Beleza Emerson_Tadeu, acho que é por ai. Só me explica melhor estas funções, que parâmetros são estes? e em que momento irei chamar a função que altera a data( expiraData(data as string) ) ?




O processo que tenho em mente se resume:

1º Criar uma nova DLL que faça referencia a antiga e que contenha funções com exatamente os mesmos nomes e com os mesmos parâmetros em quantidade e tipo da DLL antiga (TODAS).

2º As funções da nova dll simplesmente enganariam o validador e passariam os parametros para a DLL antiga que faria o processamento e retornaria o valor do resultado se houver.
Exemplo:

'Na nossa nova DLL teriamos uma refertencia a antiga Dll "MyOldDll"
'Todas funções teriam este jeitão.

Public Function RetorneInteger(ParamA,ParamB,ParamC) as integer
dim objMYDLL as MyOldDll
set objMYDLL as New MyOldDll

'A nova DLL referenciada ao VB simplesmente fez passar parametros a DLL antiga e retornou o que a antiga processar.
RetorneInteger = objMYDLL.RetorneInteger(ParamA,ParamB,ParamC)

'Ops, nunca esqueça de destruir variáveis do tipo objeto
set objMYDLL = Nothing

exit function


3º Somente a função expiraData(data as string) da nova DLL seria diferente. Precisaria de um mecanismo para burlar a validação de data antiga.
Ela receberia a data atual, validaria e então passaria uma outra data para a dll antiga continuar funcionando.


'Eca, data como string ... mas neste caso somos obrigados!
Public Function expiraData(data as string) as boolean
dim objMYDLL as MyOldDll
set objMYDLL as New MyOldDll

if data <= const_data then
'Se a data for valida na nova DLL então injetamos uma data valida na DLL antiga.
expiraData = objMYDLL.expiraData("06/05/2008")

endif

set objMYDLL = Nothing

exit function


Ainda não funciona em sua mente ?
Vc usa a nova dll exatamente como se fosse a antiga, pois ela só recebe parametros e manda processar retornando o resultado que seria fornecido se ela nao existisse.
O único tchan a mais, que inclusive é o que te salvará, é modificar ExpiraData de forma que seja validado nas duas dlls, primeiro validamos na nova e então a nova passaria uma data válida (não a mesma recebida) para a antiga autorizar o processamento.
Funcionando na mente só escrever o código, se não funcionou qual o problema exatamente ?
O que mais se pode fazer por vc ? Compilar DLLÂÂ's vc sabe .. não vejo segredos.
[/c]
WEBMASTER 02/06/2007 12:31:48
#219465
Sinceramente...
Voce vai ter um trabalho enorme para encapsular funcoes de outra DLL e voce mencionou que a mesma tem uma "data de expiracao" ainda por cima...

Talvez com um reshacker da vida, voce consiga alterar a data dentro da dll (acredito que ela seja uma constante), dai sim compensa essa trabalheira toda, do contrario voce vai perder tempo e ainda assim nao tera um "codigo fonte" de verdade.

Como disse, passei pela mesma situacao e minha atitude foi de admitir a perda e correr atras de reescrever absolutamente tudo do mesmo jeitinho. Ja faz meses que estou nessa empreitada e ainda vai levar tempo, mas eh melhor assim (no meu ponto de vista).
USUARIO.EXCLUIDOS 02/06/2007 17:06:42
#219476
Citação:

Sinceramente...
Voce vai ter um trabalho enorme para encapsular funcoes de outra DLL e voce mencionou que a mesma tem uma "data de expiracao" ainda por cima...



Ué, não é este mesmo um dos princípios da OOP ???
OOP não foi criado justamente para reaproveitar código ?
Não axo que seria mais trabalho que refazer completamente a dll.
Será que não consegui ser claro que a nova dll iria mandar data retroativa para a antiga continuar funcionando ?
A única questão indiscutível é que vc não teria um código fonte de verdade, mas acredito que teríamos uma bela vantagem já que possibilitaria reescrever todo o código de forma menos abrupta, pois imagine que todas funções ficariam iguais e somente uma precisa ser alterada ... o que fazer ?
Fácil, vamos na nova DLL, fazemos as alterações na função(ões) que precisar ser mudada e cancelamos as referencia a DLL antiga nesta(s) função(ões) fazendo o processamento agora ocorrer somente na nova, enquanto isto todas as outras funções ainda utilizam o antigo processamento que não precisa de alterações, até que um dia a antiga DLL acabe morrendo por completo.

Eu faço isto todo dia com meus componentes ? é a melhor forma que aprendi de reaproveitar código em VB.
Será que sou meio maluco ?
USUARIO.EXCLUIDOS 02/06/2007 17:29:02
#219477
Valeu todos, vou tentar tudo acima , mais em ulta ipotese reescreverei tudo.
WEBMASTER onde encontro "reshacker" ????
ADRIANO.007 02/06/2007 17:46:02
#219478
para cria referencia de uma dll basta adicionar no vb
na Classe basta declara
Ex
private exemplo as new nome_da_dll

para fazer download reshacker
http://www.vbmania.com.br/vbmania/vbmdetail.php?varID=3066&TxtSearch=reshacker&CmbSort=&varPagina=1
USUARIO.EXCLUIDOS 02/06/2007 20:21:46
#219485
Tentei utilizar o RESHACHER, só que não da certo.Não consigo abrir a DLL. Da a mensagem " THIS IS NOT A WIN32 EXECUTABLE FILE ". Não sei usálo.

Alguem pode me ajudar????????
USUARIO.EXCLUIDOS 02/06/2007 20:27:57
#219486
Citação:

EDILSON BRANDAO escreveu:
Tentei utilizar o RESHACHER, só que não da certo.Não consigo abrir a DLL. Da a mensagem THIS IS NOT A WIN32 EXECUTABLE FILE . Não sei usálo.

Alguem pode me ajudar????????



Descompilador não, existe ... isto ta virando flooder.

Lamento que minhas sugestões não tenham sido entendidas, garanto que funcionariam ... mas não posso escrever o código por vc, e nem foi isto que vc me pediu.
USUARIO.EXCLUIDOS 08/06/2007 21:51:44
#220452
Talvez eu tenha sido muito Complexo ... Este tópico pode ser mais exclarecedor.

http://www.vbmania.com.br/vbmania/vbmforum.php?varMethod=Abrir&varID=218672
Página 2 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas