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ú

Temas - Lopardo

#1
Hola amigos, todo inicia con éste mensaje de error: Controls created on one thread cannot be parented to a control on a different thread. Muchos ya sabrán la forma de solucionarlo, sin embargo, la solución que busco es una en particular, les explico a continuación.

¿Cuando ocurre éste error? Si creamos un control con un hilo y posteriormente queremos agregar a éste control un nuevo control desde otro hilo. En otras palabras, si por ejemplo, queremos agregar al formulario principal de nuestra aplicación un panel y lo queremos hacer desde otro hilo de ejecución que no sea el principal, entonces, nos lanzará el error visto inicialmente.

¿Formas de solucionarlo?
Una de las formas que he visto para solucionar este problema es hacer uso de un delegado controlado por el hilo principal que se encargue de agregar los nuevos controles.

No tengo nada en contra de esta solución, sin embargo, no es funcional para lo que estoy desarrollando, les explico. Lo que quiero hacer es mostrar una precarga, la cual esta elaborada con un conjunto de controles e imágenes agregadas a éstos, el asunto está en que si agrego la precarga al formulario principal por el hilo principal, cuando el hilo principal esté ocupado realizando alguna labor, la precarga, específicamente el gif de ésta, se detendría de forma intermitente, debido a que el hilo principal que la agregó se encuentra ocupado en otras cosas.. de aquí surge la necesidad de crear un nuevo hilo que se encargue de controlar la precarga, pero al intentar agregar la precarga al formulario principal y me daría el error antes mencionado.

Esta es la razón por la cual usar delegados no me es funcional, ya que se estaría agregando la precarga con el mismo hilo que se va a usar para realizar algunas tareas.

Podrían pensar lo siguientes... si el problema está en que cuando el hilo principal se ocupa se detiene la precarga, entonces, con usar otro hilo para realizar las labores pesadas sería suficiente, sin embargo, no podría, debido a que muchas de estas labores están relacionadas con los controles del formulario principal, por lo que sólo el hilo principal puede acceder a estos, en especial a un control tipo WebBrowser, que al intentar acceder desde otro hilo arroja el siguiente error: Object reference not set to an instance of an object. (esto también se solucionaría usando delegados, pero no me es funcional como les he explicado anteriormente).

Entonces, la pregunta sería. ¿Como puedo crear una precarga independiente del hilo principal y que forme parte del formulario principal?.. digo esto último, que forme parte del formulario principal, porque no me serviría una precarga en un formulario aparte ¿Por qué? principalmente porque las precargas serán múltiples y saldrán en diferentes partes de la aplicación según lo que se esté cargando, apareciendo en diferentes posiciones según sea el caso.

Haciendo uso de CheckForIllegalCrossThreadCalls no solucionaría el problema.

Muchas gracias por su atención, espero que lleguemos a una solución.
#2
Hola amigos he programado una librería en .Net Framework 4.0 pero necesito que funcion en la versión 2.0.. No la he programado directamente en 2.0 porque una clase requiere heredar de System.Dynamic y esa clase está en System.Core de la version 4.0.  Lo que se me ocurre es convertir la dll que genera el 4.0 a 2.0 a menos que se pueda encontrar otra solución.

Gracias por su ayuda.
#3
hola a todos, el problema que tengo es el siguiente,  tengo una función (funcion1) que recibe varios parámetros entre ellos un WebBrowser (wb), y quiero que la tarea que vaya a realizar esta función sea en paralelo, entonces, creo un nuevo hilo (hilo2) para ese objetivo, el problema viene cuando hilo2 intenta utilizar el wb, estoy seguro que la razón de ésto es porque el wb es un objeto creado por el hilo principal (hilo1) y no puede ser utilizado por hilos hijos (algo que no permite vb.net), entonces, lo que quiero hacer es encapsular el wb en un objeto de tal forma que cuando el hilo2 intente acceder a éste, se invoque al hilo1 para que éste se encargue de gestionar la tarea.

Una solución es que cada vez que vaya a utilizar el wb invoque a un delegado y realice la tarea con el wb por medio del hilo1, pero entonces, en cada lugar donde quiera utilizar el wb debería invocar al delegado.. esta solución la he probado y funciona correctamente, el asunto está en que no es factible, debido a que las funciones que utilizan el wb ya existen y son muchas y gran cantidad de esta son privadas y no tengo acceso a su código fuente, por eso he pensado en encapsular el wb dentro de otro objeto para que cuando se quiera acceder a este se ejecute el delegado que les menciono y éste se encargue de acceder a las propiedades que se estén requiriendo.

También he pensado que si pudiera sobreescribir todos los métodos de la clase WebBrowser y en el objeto wb cada vez que se intente acceder a algún método o campo lo hiciera a través de estos métodos sobreescritos, entonces, por medio del delegado llamaría a los métodos originales, el asunto está en que el objeto wb tiene una infinidad de métodos y como haría esto de forma dinámica.. esto es otra idea pero no se si sea factible.

Si tienen alguna otra idea sería bueno conocerlas.. gracias por su ayuda.

Saludos
#4
Hola a todos, me gustaría saber si cuentan con algún manual o información sobre las dll que usa .Net Reflector para decompilar y pasar el código de un lenguaje a otro, es que estoy interesado en hacer uso de este en mi propia aplicación para ver los diferentes códigos en C# o Vb.net, según la necesidad.

Tendrán alguna idea de donde puedo conseguir información al respecto. Gracias.
#5
Hola a todos, lo que quiero hacer es visualizar el código VML de un documento de word. Conocen de alguna función que puede ejecutar en un macro para que me retorne el código fuente de la pagina y poder extraer el código vml que me interesa.

Si guardo el documento como web y veo el html que genera no guarda el código vml, si no, transforma los gráficos a imágenes y eso es lo que muestra.

Saludos.
#6
Hola a todos,

Les explico lo que quiero hacer, estoy tratando de modificar el comportamiento de una aplicación para que ésta realice sus funciones de forma concurrente. Esta aplicación sirve para programar soluciones híbridas donde se combina la programación web con la programación de aplicaciones de escritorio, es como una especie de navegador web, que permite que programen sus funciones básicas.

Les explico un poco su funcionamiento para que puedan ayudarme en lo que quiero hacer. Esta aplicación esta compuesta de un WebBrowser en el cual se muestra la solución que se desarrolle, su comportamiento es similar al de un sitio web, hasta el momento que esta se comunica con código de vb.net, c#, etc. por ejemplo, si se presiona en un botón y éste llama a una función desarrollada en vb.net, no se puede presionar en otro enlace de la web porque el hilo principal esta ocupado, entonces, para evitar esto lo que hice fue que al pisar en algún botón, se crea un nuevo hilo para que este se encargue de realizar la tarea, todo funciona muy bien, sin embargo, cuando empleo las funciones que trae la aplicación para crear gráficas, me permite hacerlo varias veces y después no funciona correctamente. Lo que he pensado es que tal vez los controles empleados para crear las gráficas fueron inicializados por el hilo principal y cuando se intentan utilizar por otros hilos da problema, lo extraño es que funciona 100% si se ejecuta con el hilo principal de la aplicación, cosa que no quiero hacer porque la creación de estas gráficas dura cierto tiempo y todo quedaría en espera que se libere el hilo.

No se si exista alguna manera para ejecutar funciones almacenadas en dll y que ésta piense de alguna manera que el hilo que la este ejecutando fue el mismo que la inicializó.  O dividir el hilo principal en sub procesos para que realicen tareas diversas concurrentemente.

Bueno cualquier idea es bienvenida, gracias por su ayuda.
#7
Hola a todos, les explico lo que quiero hacer, estoy programando en vb.net usando una plataforma desarrollada por la empresa donde laboro, es algo similar a visual studio, pero menos avanzado, lo que ocurre es que tiene muchas restricciones, por ejemplo, si quieres crear una funcion, te da la opción para crearla y entonces el la introduce en la clase que corresponde y la ejecuta segun lo que se le indique, pero quiero programar algo donde necesito saber el contenido de esta clase donde se coloca la función, entonces, me pregunto, como puedo sabes los campos, funciones o procedimientos que esta clase posee desde una función que pertenezca a esta clase..

Es un poco complicado explicarlo, pero en sintesis lo que quiero hacer es conocer todas las variables que tiene una clase y sus funciones, apartir de una funcion de esta, por ejemplo,

Se tiene la siguiente clase

Código (csharp) [Seleccionar]
Class MiClase
 Dim var1 as String
 Dim var2 as String

 Function func1() as String
   ...
 end Function

 Function LeerContenido() as String
    'Esta es la funcion que quiero que lea el contenido de esta clase, que por
    'ejemplo me diga que la clase tiene las variables, var1 y var2 y la funcion func1
 end Function
end Class


Nota de D4N93R: Recuerda utilizar Geshi en tus posts con código!

Eso es lo que quiero hacer, esto es debido a que existen variables globales de la aplicacion que no tengo conocimiento de sus nombres y de saberlos podría hacer cosas que ahora se me hacen muy complejas..

Cualquier idea o sugerencia al respecto es bien recibida. Gracias
#8
Java / Leyendo imagen de formato .pgm
18 Marzo 2009, 04:14 AM
Hola a todos.

Tengo un problema cuando leo una imagen .pgm (también me ha pasado con otros formatos). Lo que quiero hacer es conocer todos los niveles de gris de la imagen.

La estructura de las imágenes .pgm es la siguiente:

Primera Línea: Una cadena mágica que identifica el tipo de formato, puede ser:

1. P2: Los píxeles están en formato ASCII (entre 0 y 255).

2. P5: Los píxeles están en formato Binario (cada píxel viene expresada en un byte).

nota: Apartir de aquí se puede colocar comentarios usando #.

Segunda Línea: Dos números enteros separados por un espacio en blanco (Ancho y Alto)

Tercera Línea: Un número entero que indica la máxima cantidad de niveles de grises que soporta la imagen. Generalmente es 255 que indica el máximo espectro de niveles de grises.

Apartir de aquí viene la imagen de acuerdo al formato especificado en la primera línea.

Si la cadena mágica es P2, viene una serie de números enteros separados por un espacio en blanco.

Ejemplo, si los valores que aparecen son:

64 40 230...

Si la cadena mágica es P5, viene una serie de bytes.

Ejemplo, si los bytes que aparecen son:

ACD...

En este  caso aparece el carácter A, que corresponde al valor ASCII 65 que será el valor del nivel de gris del primer píxel, el carácter C, le corresponde el valor ASCII 67 que será el nivel de gris del segundo píxel, etc.


El problema es que cuando comienzo a leer los bytes que forman parte de la imagen, hay valores que superan a 255 que son los 8 bits que corresponden a cada pixel, entonces la imagen al imprimirla en pantalla se ve mal.

El código es como sigue:

   //DATOS DE LA IMAGEN

//P2: Los valores de los píxeles vienen en formato ASCII (es decir como cifras numéricas enteras entre 0 y 255).
//P5: Los valores de los píxeles vienen en formato Binario (es decir la información de cada píxel viene expresada en un byte).
String cadenaMagica;

//Indica las dimensiones de la imagen. Ancho y alto.
String dimensiones[] = new String[2];

//Indica el valor máximo del nivel de gris.
String nivelGris;

//Representación de toda la imagen.
String imagen;

public void leer()
{
try
{
BufferedReader archivo = new BufferedReader(new FileReader(new File("1.pgm")));

cadenaMagica = archivo.readLine();
System.out.println ("Cadena Magica: "+cadenaMagica);


dimensiones = archivo.readLine().split(" ");
System.out.println ("Ancho: "+dimensiones[0]+" Alto: "+dimensiones[1]);

nivelGris = archivo.readLine();
imagen = " ";

String str = archivo.readLine();

while(str!=null)
{
imagen +=str;
str = archivo.readLine();
}
}catch(Exception exc)
{
System.out.println ("Error leyendo archivo");
}
}


Para mostar la imagen hago lo siguiente, recorro el String imagen y lo voy convirtiendo al ASCII correspondiente:


         

int nivel = 0;
for(int i=0 ; i<alto ; i++)
{
  for(int j=0 ; j<ancho ; j++)
{
    nivel = ((int)imagen.charAt(i*ancho+j));

    //Esto lo hago por el error para que sea un valor comprendido entre 0-255
    //No debería pasar esto.
    if(nivel>255)
    {
nivel = 255;
    }

    g.setColor(new Color(nivel,nivel,nivel));
    g.drawOval(iniX+j,iniY+i,1,1);
}
}


Espero su ayuda.

Gracias.

Saludos
#9
Java / Paso de parametros a programa en ejecucion
28 Diciembre 2007, 14:16 PM
Hola me gustaria pasarle pararmetros a un programa en ejecucion desde Java.

Algo asi, llamo a una aplicación y luego que esta se este ejecutando ir pasandole parametros los cuales producirian salidas varias en el programa, les pongo un ejemplo:

ejecuto al ms-dos desde Java y le paso comandos como dir, cd, md , etc. hasta ahora lo único que he logrado es ejecutar el programa con algo así:

Código (java) [Seleccionar]
class Programa
{
   public ejecutarPrograma()
  {
      try
     {
       //Aqui llamo la aplicacion que deseo ejecutar en este cado Ms-Dos
       Process proceso = new Runtime.getRuntime().exec("cmd /c dir");

       //Luego redirecciono el flujo de datos (creo que se dice asi jeje)
       InputStream datos = proceso.detInputStream();
       BufferedReader str = new BufferedReader(new InputStreamReader(datos));
       

       //De aqui tomo lo que va mostrando el ms-dos
      String linea = str.readLine();
      while(linea!=null)
     {
        System.out.println(linea);
        linea = str.readLinea();
     }

     }catch(Exception exc){}

  }
}


Bueno basicamente es así, disculpa si hay algun error, no tengo el compilador a mano para probarlo, pero esa es la idea.

Ahora lo que no he logrado es poder mandarle comandos al programa en ejecución, es decir, al cmd.exe, osea ¿Como puedo mandarle un dir luego que lo alla iniciado sin tener que iniciarlo nuevamente?.

Espero me entiendan, cualquier cosa no duden en preguntar..

Saludos.
#10
Java / Mover puntero del mouse en Java
20 Diciembre 2007, 19:03 PM
Hola a todos me gustaria saber como mover el puntero del mouse... es decir que le indique a alguna función las nuevas coordenadas y se ubique el puntero allí. Que sea alguna función de Java..

Gracias.. Saludos.
#11
Java / ¿Cómo lograr compilar de esta manera?
30 Octubre 2007, 03:25 AM

Bueno hace tiempo toque este tema un poco, solo que ahora vengo con unas cuantas evidencias por así decirlo y bueno espero que en conjunto encontremos la solución a este caso muy particular y realmente extraño, pensé en agregar este mensaje al mismo tema anterior, pero leí unas letras en rojo que decían que habían pasado más de 60 días y bueno preferí crear uno nuevo (bueno en realidad me lo aconsejaba el mensaje, eso creo).

¿Cómo es posible que un método tenga campos con el mismo nombre y métodos con el mismo nombre?


Bueno he intentado compilar clases con algún error y no lo he conseguido. Cuando digo error me refiero a métodos con el mismo nombre (no sobrecargados), es decir, reciben los mismos parámetros ambos y no importa lo que retorna. Mi pregunta es, ¿Cómo se logró compilar esta clase?, se supone que al codificarla en cualquier editor se detectaría el error y no permitiría compilarla, corríjanme si me equivoco.

Se estarán preguntando cual es mi problema con eso, bueno mi problema es que tengo unas cuantas *.class y me gustaría modificarle alguna parte del código, pero al decompilar la clase ya no podré compilarla de nuevo porque me daría error.

¿Cuál creen que sería la solución?.... Claro, aparte de codificar la clase completa, ya que mi idea es hacer uso de una clase cualquiera y modificarla.

Aquí les pongo unas imágenes:


Como se puede ver en la figura la clase "af.class" tiene varios campos con el nombre "a", en lo único que diferencia es en el tipo de dato, y como sabrán eso no es suficiente para ser permitido en java.


En esta otra se ven varios métodos con el nombre "a()", no entiendo como es posible tener varios métodos con igual nombre.

La clase ejemplo la obtuve de un jar que descomprimí e hice la pregunta, no tiene importancia su contenido, pero si la quieren la puedo subir.

Para que vean intente crear una clase con métodos iguales o campos iguales y verán que no se puede compilar porque da un error, bueno si alguien lo logra por favor diga la manera para aprenderla.

Tiempo si escribir, bueno espero su ayuda. Saludos a todos.
#12
Hola a todos...

Bueno mi pregunta es como hacer uso del framework 1.x en visual studio 2005. Lo que pasa es que hice una pagina en visual studio y cuando la trate de subir al servidor me di cuenta que soportaba hasta la versión 1.1 y bueno no logré subirla. No se como hacer para pasar esto para el visual studio que usa una v1.1 o para otro editor que te permita cambiar los framework por la version deseada.

En sintesis lo que quiero es poder tener mi pagina con un framework 1.1.

Gracias saludos...
#13
Java / Obtener PID (id de Proceso) desde Java
5 Enero 2007, 14:56 PM
Bueno les cuento.. Necesito saber como obtener el pid de proceso de una forma optima.

Esto es lo que he hecho. Pero es Poco optimo.

//Primero ejecuto el programa que quiero, desde Java.
Runtime.getRuntime().exec("cmd /c \""+rutaDelPrograma+"\"");

//Luego llamo este método que he hecho.

/*Este método lo que hace es que obtiene una lista de procesos activos haciendo uso del cmd de windows, busca el nombre del programa que le pasamos y obtiene el PID que se encuentre en la misma linea. */

public int obtenerPID(String programa) throws Exception
   {
            Process p = Runtime.getRuntime().exec("cmd /c tasklist /nh");
            InputStream is = p.getInputStream();
            BufferedReader br = new BufferedReader (new InputStreamReader(is));
            String tareaR = br.readLine();
            
            while(tareaR!=null)
            {
                StringTokenizer st = new StringTokenizer(tareaR," ");
                String nombre = st.nextToken();
                if(nombre.compareToIgnoreCase(programa)==0)
                  return Integer.parseInt(st.nextToken());
                tareaR = br.readLine();
            }   
       return -1;
   }

Bueno me parece que es un poco ineficiente ya que mientras más grande sea la lista de procesos más se tardará. Bueno y que en caso de haber dos procesos con el mismo nombre entonces se deberia preguntar si la PID del proceso ya fue registrada y esas cosas... Lo cual aumentaria más el tiempo.

Bueno mi pregunta es: ¿Hay algun método de Java que me haga esto?...

Saludos
#14
Java / Componentes para fecha / hora en Java
29 Diciembre 2006, 23:08 PM
me gustaria saber si en Java hay clases que faciliten trabajar con las fechas y horas de forma gráfica. Algo asi como en C# que ya estan listos los calendarios y esas cosas.

Saludos.
#15
Java / Orígenes de datos (ODBC). Para Java
26 Diciembre 2006, 19:36 PM
Estoy haciendo una pequeña aplicación que hace uso de una Base de Datos de Microsoft Access, ya logré configurarlo y me he conectado y todo eso, lo he hecho manualmente, es decir, entre en el panel de control, en herramientas administrativas y luego a Orígenes de datos (ODBC) y configure el Origen de Datos de Microsoft Access. Pero el problema es precisamente este, no quiero configurarlo así. Como hago para configurarlo desde Ms-Dos, lo que pasa es que quiero que en la instalación de mi aplicación se configure la base de datos para no tener que hacerlo manualmente.

No tiene que ser precisamente por Ms-dos, puede ser por cualquier parte, pero que no tenga que intervenir el usuario que la instale.

Bueno me meti en c:\windows\system32\ y encontre un archivo que me llamó la atención se llama así "odbcconf.exe", no se si esto puede servir de algo. Bueno espero que alguien pueda darme una mano con esto...

saludos...
#16
Hola.

Como logro compilar un .java que contiene errores?... En realidad el codigo no contiene errores,  lo que pasa es que este hace referencia a clases que no se encuentran en el paquete, pero eso no importa porque luego las voy a añadir.

En esencia es esto lo que quiero hacer:

Tengo esta clase:

class clase01
  {
    public static void main(String args[])
      {
        clase02 ob = new clase02();
        ob.imprimir();
      }
  }

Pero esta no la tengo:

class clase02
{
   void imprimir()
     {
       System.out.println("Esto es un ejemplo");     
     }
}

Si trato de compilar la clase01 esto daría error, ya que no encontraria clase02.class (el cual contiene el metodo imprimir invocado por la clase01).

de aqui surge mi pregunta.. Como logro compilar la clase01 sin que la clase02 este presente.

Saludos...
#17
Java / Girar Imagen en Java
23 Mayo 2006, 22:21 PM
Hola... Mi pregunta es como girar una imagen y que permanezca con el mismo centro... que puedo utilizar?... he visto que en Graphics2D hay algo de rotar y trasladar, pero no se como usarlo.. alguien sabra como es que se hace lo que quiero?...

Saludos
#18
Java / Descripcion de Metodos JAVA
1 Febrero 2006, 01:54 AM
Alguien puede decirme donde conseguir la descripcion detallada e los metodos de java. Me refiero a la forma en la que fueron hechas... por ejemplo de la class Math quisiera saber como esta hecho el metodo pow, o cualquiera..

saludos...
#19
Java / Dibujos en Consola de Java
26 Enero 2006, 21:08 PM
Hola... Me gustaria hacer dibujos en la consola, no me diante applets. Que clase se encarga de hacer esto?... como podría hacerlo?..

Saludos
#20
Java / Libros de Java
29 Diciembre 2005, 17:54 PM
Hola a todos... Estoy a prendiendo a programar en Java y e gustaria adquirir libros para facilitar mi aprendizaje.. Alguien me puede recomendar alguno en especial...

Saludos
#21
Diseño Gráfico / Video en vivo
30 Noviembre 2005, 02:01 AM
Hola a todos.. Mi incognita es la siguiente tengo una camara de video y me gustaria capturar el video en vivo por una aplicacion hecha con flash...

Es decir, lo que quiero es que me ayuden a hacer un flash que cuando se ejecute me vea por un recuadro del mismo (haciendo uso de la camara), y poder capturar la imagen que desee, ya sea colocandole unos botones que hagan esto. Por lo menos me gustaria saber si se puede... gracias

saludos..
#22
Diseño Gráfico / montajes de Imagenes.
21 Noviembre 2005, 17:12 PM
Lo que quiero hacer es tomar una foto y quitarle el fondo y colocarle otro...

¿Que programa me recomiendan para esto?

el fondo en el que me tomo las fotos son de un solo color.. es decir, tego fotos con fondos blancos y otras con fondos azules.. Como hago para cambiar esos fondos por paisajes.

Saludos..