|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Eternal Idol
Páginas: 1 ... 69 70 [71] 72 73 ... 205
1751
« en: Domingo 11 de Noviembre de 2007, 01:18 »
Normalmente cuando posteo una respuesta, lleva consigo un enunciado claro y preciso, basado en una prueba que realizo con anterioridad, en muchos foros he visto que no prueban sus respuestas, y a veces esta equivocada. Es evidente que no fue el caso, ademas de ser una respuesta equivocada no habia ninguna explicacion. No es un puntero, es "&". Genial, el punto seria como podes saber eso ... de cualquier manera es IRRELEVANTE, se le esta pasando una direccion de memoria y eso es de lo que es queja el compilador. Por lo tanto si fuera correcto lo que decis es un problema de logica del programa y un casting no soluciona absolutamente NADA. Este esa el código que posteó "x1x1x1" y funciona perfectamente: ¿Es una broma? Eso lo habra publicado en otro foro, aca no esta ese codigo. Este es el código que NO se posteo y fué la única forma que pude reproducir el error. Practicamente todo ese codigo te lo inventaste ... Esto es redundante teniendo en cuenta TU codigo: if ( (int)mat[b1] > 20) { /* <--------------------------- (int) */ Este es el código que recomiendo, aunque estaba previamente claro, puesto que el error no se presentaba en el código inicial. Entonces tu primera respuesta pasa a ser estupida. ¿No hay error? ¿Entonces para que hay que hacer un casting? Por favor! Perdón por mi insistencia en el mismo tema pero aún este código funciona correctamente, si ese fuera el camino que hubiera seleccionado para crear las variables con punteros. Reservar tres int's para usar solo uno es muy correcto ... Te recomiendo que esperes a que el usuario que publico la pregunta haga la aclaracion pertinente sobre su codigo. Si no tenia ningun error de compilacion tu solucion de usar un casting es inutil y si estaba usando el & sin necesidad lo sigue siendo.
1752
« en: Domingo 11 de Noviembre de 2007, 01:07 »
Ok, eternal ido, muchas gracias por tu ayuda. Voy a ver como lo depuro porque le he dado mil vueltas, incluso haciendo en papel para ver lo valores que tomaría en memoria, pero lo volvere a mirar. Muchisimas gracias. Asta otro momento. Mira el segundo for, esta mal la condicion, haces contador2=contador-1 entonces contador2++ no tiene ningun efecto y contador2 no cambia de valor nunca.
1753
« en: Sábado 10 de Noviembre de 2007, 21:58 »
Nunca sale del bucle, depuralo paso a paso y comproba los valores de cada variable. No voy a comentar nada sobre el planteamiento en si mismo, eso te lo dejo pura y exclusivamente a vos.
Agrego: en el segundo for NO estas haciendo una comparacion (==) sino una asignacion (=), esa asignacion "equilibra" el incremento ...
1754
« en: Sábado 10 de Noviembre de 2007, 21:42 »
¿Y si vemos el codigo? ¿Estas usando %f por casualidad?
1755
« en: Sábado 10 de Noviembre de 2007, 21:00 »
Intenta crear un cast. (int)mat[b1] > 20 ¿Tiene sentido comparar un puntero con 20? A menos que sea 0 siempre va a ser mayor a 20, debe ser un error de logica y hacer un casting para forzar la comparacion no lo solucionaria.
1756
« en: Sábado 10 de Noviembre de 2007, 18:27 »
ISO C++ forbids comparison between pointer and integer.
20 es el integer evidentemente.
1757
« en: Jueves 8 de Noviembre de 2007, 22:40 »
*ptr = "a";
ptr es un puntero a caracter, tenes que usar un caracter ('w' por ejemplo) y no una cadena ("a").
El while no tiene fin ... mejor incrementa ptr.
char buffer[100] = "hola";
No podes declararlo asi, "hola" no ocupa ese tamaño, podes usar: char buffer[] = "hola";
Y por ultimo referencia(&buffer);, saca el operador & y listo.
1758
« en: Jueves 8 de Noviembre de 2007, 16:46 »
Esto ha sido una broma, pues nada ha pasado, y en varios foros esta este mensaje. No creo que haya sido una broma, tal vez si un fracaso segun parece ... pero que respondan los que cedieron su e-mail a la espera de mas informacion ...
1759
« en: Jueves 8 de Noviembre de 2007, 16:27 »
1760
« en: Jueves 8 de Noviembre de 2007, 15:56 »
Estoy usando devc++.
Sin embargo creo que había cometido algún error y se me había olvidado algún static en el código. Si, el necesario ¿Está bien así? Si, probalo
1761
« en: Jueves 8 de Noviembre de 2007, 15:32 »
Muchas gracias Eternal Idol.
He realizado las modificaciones correspondientes, pero obtengo un error en _beginthreadex.
In member function 'void L2cap:: Server(int,char**)'
argument of type 'unsigned int (L2cap:: )(void*) does not match 'unsigned int (*)(void*)'
Build error (L2cap.o) Error 1
¿Estas seguro de que estas usando el ultimo codigo? Ese es el error que se obtiene cuando la funcion NO es estatica ... ¿Que compilador estas usando? Tanto con VC++ como con gcc bajo Windows lo compila bien ... cuando se usa: static unsigned __stdcall L2cap::Answer(void* a);
1762
« en: Jueves 8 de Noviembre de 2007, 10:29 »
Yo lo decía más que nada porque se quejaba del tiempo que tardaba, yo las uso para otras cosas y en eso no se pierde nada de tiempo, pero vosotros sabéis mucho más que yo, desde luego Bueno, en lo que tarda es en mostrarla en pantalla en realidad.
1763
« en: Jueves 8 de Noviembre de 2007, 09:22 »
Si pongo Answer como estátito cobtengo el error siguiente:
invalid use of member L2cap::escuchando in static member function Evidentemente y es por la razon que te decia antes: Mientras no uses ningun variable miembro de la clase no hay problema, sino tenes que pasarle un puntero a la instancia del objeto ya que al ser una funcion estatica no tiene puntero this (no pertenece a ninguna instancia de la clase). Al ser un solo parametro el que se le puede pasar a un hilo normalmente se usa una estructura con varios campos, en este caso por ejemplo el this y el a. Sino creas otro miembro en la clase L2cap y antes de crear el hilo le asignas a ese campo el valor de a y solo tenes que pasar this para trabajar. Una posible solucion seria hacer esto: Primer agregamos un campo a L2cap: private: // VARIABLES GLOBALES Socket *s; bool escuchando;
Al crear el hilo pasamos lo que viene a ser el puntero this (la direccion en memoria del objeto): s=in.Accept(); //el nuevo campo de la clase que declaramos _beginthreadex(0,0,Answer,(void*)this,0,&ret); //pasamos this
Entonces en Answer ya no recibimos un puntero a Socket sino uno a L2cap: unsigned __stdcall L2cap::Answer(void* a) { L2cap *thisL2cap = (L2cap*)a; //Ahora podes usar thisL2cap para acceder tanto a escuchando como a s o cualquier otro campo }
Por cierto, no uses #include <> con tus archivos ya que estan en el mismo directorio, usa #include "".
1764
« en: Jueves 8 de Noviembre de 2007, 08:11 »
1765
« en: Miércoles 7 de Noviembre de 2007, 21:47 »
Muchas gracias de nuevo. La comunicación por sockets la requiero porque me es necesario para simular el comportamiento entre dos instancias de mi programa, que se estén ejecutando, ya sea en la misma máquina o en máquinas distintas. Bueno, eso fue lo primero que te pregunte, si eran la misma instancia ... me dijiste que si pero en realidad la respuesta era no No he entendido muy bien la solución de crearme otro miembro en la clase l2cap, ¿a que se refiere? NO es otro miembro, es el mismo pero estatico, declaralo asi y tu programa compilara.
1766
« en: Miércoles 7 de Noviembre de 2007, 18:15 »
NO se hacen tareas.
1767
« en: Miércoles 7 de Noviembre de 2007, 14:21 »
No has pensado en usar alguna biblioteca de tratamiento de imágenes, como openCV, CImage y cosas así, esas operaciones las hacen muy rápido, aunque claro, tienes que usar en memoria su formato de imagen, supongo que a lo mejor te puedes meter en las tripas a ver que hacen, aunque yo no me atrevería. Pasar una imagen de RGB a escala de grises es algo muy simple, incluso usando el promedio (como dijo gatiori) se obtiene un resultado cercano al esperado.
1768
« en: Miércoles 7 de Noviembre de 2007, 10:26 »
Se hicieron estudios y se demostro que: To convert any color to its most approximate level of gray, first one must obtain the values of its red, green and blue (RGB) primaries. Then it is sufficient to add 30% of the red value plus 59% of that of the green plus 11% of that of the blue, no matter whatever scale is employed. The resultant level is the desired gray value. These percentages are chosen due to the different relative sensitivity of the normal human eye to each of the primary colors (higher to the green, lower to the blue).Desde Wikipedia. Igual NO es blanco y negro, son 256 (de 0 a 255) colores (grises) diferentes y en realidad el codigo deberia ser asi: bn=(double) ((color.R*0.3)+(color.G*0.59)+ (color.B*0.11));
O deberias dividir por 100 el resultado final en tu codigo ya que sino el valor de bn nunca estara entre 0 y 255, y sera invalido: Color.FromArgb (Int32, Int32, Int32): Creates a Color structure from the specified 8-bit color values (red, green, and blue). The alpha value is implicitly 255 (fully opaque). Although this method allows a 32-bit value to be passed for each color component, the value of each component is limited to 8 bits. De la MSDN. Es muy probable que el cuello de botella este en GetPixel y SetPixel.
1769
« en: Miércoles 7 de Noviembre de 2007, 09:53 »
¿Que significa declarar esa función como static Eternal Idol? Es que soy totalmente novato en la programación y me pierdo.  Que sea una funcion independiente de una instancia de la clase. ¿Puede ser que beginthreadex no pueda usarse dentro de una clase? Exacto. class L2cap { public: static unsigned __stdcall Answer(void* a); };
Mientras no uses ningun variable miembro de la clase no hay problema, sino tenes que pasarle un puntero a la instancia del objeto ya que al ser una funcion estatica no tiene puntero this (no pertenece a ninguna instancia de la clase). Al ser un solo parametro el que se le puede pasar a un hilo normalmente se usa una estructura con varios campos, en este caso por ejemplo el this y el a. Sino creas otro miembro en la clase L2cap y antes de crear el hilo le asignas a ese campo el valor de a y solo tenes que pasar this para trabajar. Pero vuelvo al principio: no es necesario usar sockets - y no tiene logica - dentro un programa sino se necesita comunicaciones por red.
1770
« en: Martes 6 de Noviembre de 2007, 21:41 »
Falso!!!!
fflush() es ANSI C Si, PERO si seguis leyendo ese mismo enlace: It should be use for output streams only; otherwise the behavior is undefined. Agrego: En Windows funciona con cualquier stream (objetos de archivos al fin de cuentas en Windows NT) al terminar llamando a la funcion FlushFileBuffers de la API de Windows.
1771
« en: Martes 6 de Noviembre de 2007, 17:21 »
Ah, es VC++.NET en lugar de C# entonces se mueve a Otros CLR.
1772
« en: Martes 6 de Noviembre de 2007, 15:46 »
Si, efectivamente. Bueno, no tiene ningun sentido recurrir a una libreria de red para eso ... Parece que al estar dentro de mi clase L2cap, obtiene un error de parámetros o algo. Ahi es donde tengo el problema. Si declaraste la funcion como static asi te deberia funcionar ...
1773
« en: Martes 6 de Noviembre de 2007, 10:55 »
Viendo tu codigo me parece que este hilo esta mal ubicado y deberia ser movido al subforo de C#.
1774
« en: Martes 6 de Noviembre de 2007, 09:00 »
¿Dentro del mismo programa (en la misma instancia) usas sockets?
Para que el _beginthreadex compile hace: _beginthreadex(0,0,L2cap::Answer,(void*) s,0,&ret);
1775
« en: Domingo 4 de Noviembre de 2007, 20:58 »
NO SE HACEN TAREAS
Páginas: 1 ... 69 70 [71] 72 73 ... 205
|
|
|