Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - El Benjo

#81
Pues sí, la solución que me has dado con Assembly.Load en vez de Aseembly.LoadFile ha servido. Muchas gracias. :)
#82
Hola, Elektro, gracias por responder.

De hecho el proyecto carga un ensamblado en tiempo de ejecución y lo hacía con el método LoadFile() y no Load(). Todavía no pruebo el código porque en base a esta última modificación debo hacer varias modificaciones ya que se modifican algunas propiedades del objeto Assembly que devuelve. Pero en cuanto pruebe el código posteo si se ha solucionado.

De nuevo, muchas gracias, Elektro.
#83
Hola, buen día. Actualmente estoy trabajando en un proyecto donde importo un ensamblado y hago una instancia de una clase definida en ese ensamblado. La cuestión es que tengo un botón cuya acción es borrar el archivo de dicha dll, sin embargo el método File.Delete() me arroja una excepción de tipo UnauthorizedAccessException. He intentado eliminar la instancia que tengo de dicha clase dentro del ensamblado, pero al parecer esto no es suficiente. ¿Cómo puedo hacerlo, si es que puedo?
#84
Bueno, la diferencia es la manera en la que accedes a los miembros de la clase. Explico:

Los métodos, variables, propiedades, etc. declarados dentro de un módulo tienen un alcance global dentro del proyecto de manera predeterminada. Además, no puede haber instancias (objetos) del tipo de un módulo; las clases, por otro lado, necesitan ser instanciadas para usar sus métodos, propiedades, etc.

La MSDN explica mejor esto mismo: https://msdn.microsoft.com/es-es/library/7825002w(v=vs.90).aspx

Como dato adicional te puedo decir que puedes hacer que una clase se comporte de manera similar a un módulo si incluyes el modificador shared en una clase. La única diferencia que habría entre ésta y un módulo sería que para acceder a los elementos de la clase tendrías que escribir el nombre de la clase, un punto y el nombre del método, propiedad, variable, etc.
#85
Hola, mis conocimientos en la programación orientada a eventos comenzaron con este lenguaje. Te puedo decir algunas cosas que se aplican a cualquier lenguaje y no algo en específico al VB:

· Indenta el código.
· No pongas todas las funciones en un único archivo o módulo. (En el formulario principal, por ejemplo, intenta dejar únicamente las funciones relacionadas con los eventos o que trabajen directamente sobre el formulario y sus controles)
· Nombra a cada control al que hagas referencia en el código. (Me refiero a que si pones un label sobre el que nunca vas a actuar puedes dejarlo con el nombre de label1, por ejemplo, pero si en tu código haces referencia a él para asignar u obtener una propiedad entonces deberías nombrar al label según su función)
· Comenta las partes de tu código que no sean muy obvias, pero no escribas comentarios innecesarios. El de abajo es un comentario innecesario porque lo que hace la linea de código e bastante obvio.

Código (vbnet) [Seleccionar]
'Incremento la variable Var1.
Var1 = Var1 + 1


Y por el momento creo que es todo lo que se me ocurre. Espero que más de uno de los puntos te fuera de ayuda.
#86
Supongo que primero necesitarías buscar un analista de sistemas que te diga las tecnologías que requiere tu aplicación. Él mismo te dirá el personal que hace falta y las habilidades que necesitan.
#87
Con la API mediante la función GetAsyncKeyState() puedes hacerlo.

http://www.pinvoke.net/default.aspx/user32.getasynckeystate
#88
Jajajajajajajajajajajaja Que bueno que te sirvió.

No te lo voy a calificar, pero en todo caso puedes dejarlo para que le sirva a alguien más... o (habiendo dicho cómo tratar el problema) podemos dejárselo de tarea también a esa persona. XD
#89
Realmente no hay una funcion en .net que te devuelva un array sin elementos repetidos. Todos en alguna ocasión nos hemos encontrado con este problema y debemos implementar nuestras propias funciones para lidiar con él. De hecho la forma en que lo estás haciendo parece sigue el modelo que se utiliza para ello:

· Primer bucle que recorre el array en su totalidad.
·   Segundo bucle que recorre el array después de la posición del bucle 1.
·     Si el elemento no está repetido:
·       Lo agrego al segundo array.
·     Fin
·   Next
· Next
#90
Yo hice un código hace tiempo precisamente para eso y me funcionaba bien, sólo que yo enviaba la información de forma distinta:

Primero envía un paquete de longitud de 4 bytes (int32) con la longitud en bytes de la imagen que deseas enviar. Después envía los bytes de la imagen.

Del lado del servidor captura primero los 4 bytes del tamaño y después debes comenzar la lectura de los datos y almacenarlos hasta llegar a la longitud deseada. Una vez que has alcanzado la longitud realizas la conversión del flujo de bytes a imagen.

Te dejo el código de envío y lo pruebas. Di si te funciona. El de recepción te lo dejo de tarea. ;)

Código (csharp) [Seleccionar]
//Capturo la imagen de la pantalla
                Bitmap bmCaptura = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
                Graphics captura = Graphics.FromImage(bmCaptura);
                captura.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size);

                MemoryStream stream = new MemoryStream();
                bmCaptura.Save(stream, ImageFormat.Jpeg);

                byte[] byteArray = BitConverter.GetBytes(stream.Lenght);

                //Envio los bytes al servidor.
                NetworkStream net = conectarme.send_server;
// Primero envío la longitud.
                net.Write(byteArray, 0, 4);
                byteArray = stream.ToArray();
// Después envío los datos.
                net.Write(byteArray, 0, byteArray.Length);
                net.Flush();