• Domingo 5 de Mayo de 2024, 18:39

Mostrar Mensajes

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 - rfog

Páginas: 1 [2] 3 4 ... 7
26
Visual C++ / Re: Error en visual studio 2010 (c++)
« en: Domingo 24 de Abril de 2011, 21:37 »
Activa ver actualizaciones en los programas instalados.

Vete a la opción de los runtimes de Visual Studio y desinstala las KB que tengan fecha de la última actualización de Windows Update.

27
Visual C++ / Re: libreria cientifica Microsoft Visual Studio 2005
« en: Viernes 22 de Abril de 2011, 18:54 »
Supongo que sí, que necesita el Mathematica instalado en local o en algún servidor para responder a dicha consulta.

De todos modos Wolfram Research tiene la opción de resolver de forma remota. Es decir, tu le envías la consulta a través de la web y ellos la resuelven y te devuelven la respuesta más o menos en tiempo real... La cuestión es que supongo que eso costará dineros...

Del código que me pones, ni idea, pero el Mathematica resuelve lo que le pongas delante sea del tipo que sea, aunque lo mismo te vale alguna otra cosa menos profesional...

Por ahí andan un montón de simuladores de calculadoras científicas, HP incluidas, y seguro que algunas de ellas disponen o bien del código fuente o bien de la posibilidad de licenciamento, y creo que también existe algún "kernel" cas para pc sin la parte gráfica de las hp...

Es cosa de mirar y probar.

Y como último extremo, si la ecuación es siempre la misma, la puedes resolver a mano e incluir los pasos en código o por métodos numéricos de aproximación...

28
Visual C++ / Re: libreria cientifica Microsoft Visual Studio 2005
« en: Lunes 18 de Abril de 2011, 17:13 »
Si el tema es serio y dependen vidas de ello, quizás sería interesante que los cálculos te los hicera alguien "profesional" como el Mathematica de Wolfram Research, que permite acceso desde C++...

29
Visual C++ / Re: Error en visual studio 2010 (c++)
« en: Lunes 18 de Abril de 2011, 17:11 »
Hay un pequeño error con esa función en la última actualización de seguridad de Microsoft, y están en ello.

Si tenéis problemas la mejor opción es tirar de restaurar sistema y no actualizar los runtimes de C++ ni los parches para visual studio.

MS sacará la corrección lo antes posible.

Dicho como MVP de C++ Oficial de MS.

30
Otros CLR / Re: Intellisense unavailable for CLI/C++ en VS 2010
« en: Miércoles 13 de Abril de 2011, 15:16 »
IntelliSense no está disponible para C++/CLI. No es que sea un error de Visual Studio, es que no lo han implementado. Lo dejan para la siguiente versión.

Existe un producto que se llama Visual Asist X de Whole Tomato que, pese a valer una [relativa] pasta, es un producto insustituible para tener un IntelliSense en condiciones en cualquier Visual Studio.

31
Visual C++ / Re: Acciones fuera del programa!!!!
« en: Jueves 7 de Abril de 2011, 21:15 »
Para subir una ventana en el z-order, tienes que llamar a BringWindowToTop() padándole el handle (que habrás recibido mediante CreateProcess(), pero si no es así, con FindWindow() y el nombre del ejecutable, obtendrás dicho handle): http://msdn.microsoft.com/en-us/library ... 73(v=vs.85).aspx

Para acceder a los enlaces que te pongo, copia y pega el texto incluyendo los paréntesis y el .aspx. Son cosas de cómo Microsoft llama a los enlaces y los parsers de los foros no entienden (y ya sé que puedo escribirlo en html y funcionaría, pero digamos que es más fácil para mi pegar el texto, aparte de que no ando muy sobrado de tiempo)...

32
C/C++ / Re: Buscar en cadena de caracteres
« en: Jueves 7 de Abril de 2011, 13:16 »
Para cada palabra, usa strstr() para encontrarla en caracteres, y si es así, añades la ocurrencia a un nuevo vector con las posiciones...

33
Visual C++ / Re: Acciones fuera del programa!!!!
« en: Jueves 7 de Abril de 2011, 13:13 »
Para abrir otro programa en background puedes usar CreateProcess() y controlarlo como quieras: http://msdn.microsoft.com/en-us/library ... 51(v=vs.85).aspx

Para copiar un fichero, tienes CopyFIle(): http://msdn.microsoft.com/en-us/library ... 51(v=vs.85).aspx

34
C/C++ / Re: Programación Asíncrona
« en: Viernes 1 de Abril de 2011, 17:39 »
Cita de: "Leber"
Yo había he usado hilos, en códigos mios para aprender, y si que se que para modificar secciones críticas lo mejor es bloquear el mutex y luego desbloquearlo, lo que no sabía es que las variables debían ser volatiles.

Saludos

Eso es porque nunca lo has probado en entornos multicore o multiprocesador... Hasta en un micro HyperThreading no hay problema porque comparten caché y memoria, pero con un sistema multiprocesador sí, y más todavía si utiliza arquitectura numa completa. En ese caso, dependiendo del compilador, ni siquiera con volatile es suficente.

Con todo, al menos Visual C++ es lo suficientemente inteligente como para detectar el uso de una variable compartida y optimizarla sin perder la sincronización.

Respecto a los mutex, al menos en Windows son objetos del núcleo y son caros en tiempo de proceso y de ejecución, por lo que para sincronización entre hilos de un mismo proceso se recomiendan las secciones críticas porque son objetos locales mantenidos por el compilador y el runtime, mucho más rápidos y eficientes.

35
C/C++ / Re: Programación Asíncrona
« en: Viernes 1 de Abril de 2011, 15:11 »
Cita de: "Leber"
Cita de: "m0skit0"
Aún así estás usando multihilo o multiproceso, aunque sea de forma transparente

Igualmente estoy casi convencido que lo hará con hilos u otro proceso si no necesita acceder a la memoria/código de tu proceso.

Segun tengo entendido, los hilos a diferencia de los procesos, comparten memoria y código, no? Así que no habría mucho problema si un hilo auxiliar necesita modificar, por ejemplo, una variable global.

Así es. No sólo variables globales, sino variables de instanca y objetos. Un hilo tiene su propia pila pero comparte el montículo global de la aplicación, aunque si quieres puede tener un montículo aparte, así como TLS (Thread Local Storage), al menos en Windows.

Y sí, puedes acceder a cualquier objeto global o de instancia con visibilidad (un hilo no es más que una función que se ejecuta de forma "simultanea" con otras), pero ten en cuenta que tienes que "sincronizar" el acceso, porque un hilo podría leer una variable mientras que otro la está modificando y el resultado queda indeterminado.

La forma más sencilla de sincronizar es tener unos "flags" que indiquen cuándo un hilo está modificando. Aunque la forma correcta son las secciones críticas, los mutex y los semáforos.

Y declara todas las variables que vayan a usar diferentes hilos como "volatile" o podrías tener problemas en entornos multicore o multiprocesador.

36
C/C++ / Re: Programación Asíncrona
« en: Viernes 1 de Abril de 2011, 15:07 »
Cita de: "m0skit0"
Cita de: "rfog"
Puedes trabajar de forma asíncrona sin hilos cuando estás haciendo E/S a disco mediante las estructuras OVERLAPPED de CreateFile/ReadFile/WriteFile.
Aún así estás usando multihilo o multiproceso, aunque sea de forma transparente

Igualmente estoy casi convencido que lo hará con hilos u otro proceso si no necesita acceder a la memoria/código de tu proceso.

Pero eso lo está haciendo Windows internamente, tu no te tienes que preocupar de nada más de que cuando se ejecute tu callback los datos están en el buffer y son válidos.

37
Visual C++ / Re: Cambio de estilo visual proyecto MFC
« en: Viernes 1 de Abril de 2011, 14:10 »
Es un poco complicado de hacer, porque son todo clases nuevas que tendrás que cambiar a mano.

En general todo hereda de CWindowEx y sus correspondientes equivalentes, y en general son los mismos nombres de clases pero con la extensión "Ex" al final.

A veces un simple cambio de nombre funciona, otras no y tienes que meter mucho código para que funcione todo bien.

Lo que puedes hacer es crearte un proyecto vacío lo más parecido al que tengas o quieras y entonces te fijas qué clases está usando para poner tu las mismas en tu código.

Ah, y no te asustes si tu ejecutable pasa de 800K a 2 ó 3 GB de tamaño...

38
C/C++ / Re: Programación Asíncrona
« en: Viernes 1 de Abril de 2011, 14:07 »
Puedes trabajar de forma asíncrona sin hilos cuando estás haciendo E/S a disco mediante las estructuras OVERLAPPED de CreateFile/ReadFile/WriteFile.

Básicamente tu suscribes un callback (un puntero a función) en esas estructuras cuando llames a la función, que hará su operación en background y cuando haya terminado de hacer lo que le has dicho, ejecutará ese callback, informándote de que ha terminado, tras lo cual ya puedes hacer lo que quieras con lo cargado.

39
Visual C++ / Re: de Visual studio 2003 a visual 2010
« en: Viernes 1 de Abril de 2011, 09:57 »
Pues básicamente, NPI.

Supongo que depende de lo estrictas que sean las directivas que le hayan puesto al servidor, y de hecho, si se exigiera algún tipo de manifest en concreto, es algo que el sysop del servidor os tendría que decir, como mínimo de forma no técnica: "Vuestros ejecutables no pueden salir por red, no pueden exigir un salto del UAC, sólo pueden -o no pueden- escribir en el profile del usuario, tipo de acceso al registro", etc...

40
Visual C++ / Re: de Visual studio 2003 a visual 2010
« en: Jueves 31 de Marzo de 2011, 21:48 »
Si quieres un manifiesto de esos tienes que apuntar al compilador a uno de ellos o incluirlo en un fichero de recursos y decirle al compilador que use el embebido. Eso se hace en donde has desconectado el manifest.

En realidad no lo necesitas, ya que Windows genera uno automáticamente inspeccionando tu binario y éste viene sin ninguno, pero no sé qué pasará con versiones futuras de Windows.

Un manifest es un fichero de texto que contiene varios metadatos sobre el ejecutable, como si va a necesitar UAC, o si puede acceder a la red o si tiene permisos para ejecutar los temas de XP...

41
C++ Builder / Re: Mayuscula
« en: Jueves 31 de Marzo de 2011, 12:48 »
No tengo a mano un C++Builder, pero o bien usas un MaskEdit o bien capturas el evento de pulsación de tecla (como se llame, ahora no me acuerdo) y la transformas tu a mano.

42
Visual C++ / Re: COMO DAR SEGURIDAD A TU .EXE
« en: Jueves 31 de Marzo de 2011, 12:47 »
El propio Visual C++ trae un instalador propio.

Simplemente añade un nuevo proyecto de tipo instalación dentro de los tipos de proyectos que tienes.

Y respecto a lo de proteger una aplicación, ten en cuenta lo siguiente:
A) Si quieren te lo van a piratear con menos esfuerzo que el que tu hayas hecho para crear la protección.
B ) Las protecciones siempre terminan dando serios problemas de estabilidad en los programas, cuanto más profunda y seria sea, más problemas dará.
C) Si tu programa tiene éxito, hagas lo que hagas te lo van a piratear. Si no tiene éxito o es algo vertical para algún cliente, sólo vas a generarle problemas a ese cliente por el punto B ).
D) La protección más segura es el control de ejecución remoto, es decir, que el usuario tenga que validarse contra un servidor remoto bajo algún tipo de protocolo encriptado, y que el servidor le envíe un blob (un bloque binario) que el programa necesite sí o sí para funcionar (por ejemplo una serie de partes binarias que insertes en tu propio código ejecutable), pero todo eso son palabras mayores, aparte de que el día que tu servidor esté caído, o tenga lentitud de conexión el usuario se va a acordar de ti, y ten seguro que si lo que quiera que hagas tiene éxito, te lo piratearán.

43
Visual C++ / Re: de Visual studio 2003 a visual 2010
« en: Jueves 31 de Marzo de 2011, 12:40 »
Pues te falta el manifest de la aplicación, que generalmente suele estar incluído en los recursos de tu programa.

Genera un proyecto vacío y copia el recurso manifest al que tienes ahora, o crea un fichero con el nombre "tuEjecutable.exe.manifest" con el contenido adecuado (mira la MSDN) y lo dejas en la carpeta del proyecto.

También puedes decirle al compilador que genere uno automáticamente. Está en las opciones del proyecto por algún lado (ahora no tengo a mano ningún Visual Studio para ver dónde).

44
Visual C++ / Re: no consigo ejecutar aplicación con shellexecute.
« en: Jueves 31 de Marzo de 2011, 12:37 »
El programa que quieres ejecutar debe estar accesible desde el PATH o en la misma carpeta que el directorio actual del programa llamante.

La vez que llamas con "C:" no te funciona porque es "C:\", doble barra para indicar una sóla barra invertida.

45
C++ Builder / Re: Buscar un string en un listbox
« en: Martes 22 de Marzo de 2011, 13:50 »
Usa la propiedad Items->Strings del listbox y hazlo a mano con el método Contains() de String...

46
C++ Builder / Re: Ahorro de codigo
« en: Viernes 18 de Marzo de 2011, 12:05 »
Comparte un mismo evento OnExit de cada control y no dejes salir si el campo está vacío. Para saber qué control es, moldea el Sender al TEdit y listo.

Algo así (escrito de memoria)

TEdit *e=dynamic_cast<TEdit *>(sender);
if(e->Text->IsEmpty())
{
Application->MessageBox(...)
Abort();
}

Lo de abort() no lo tengo tan claro, pero si no es esa llamada es el otro parámetro que recibes que impedirá salir o simplemente vuelves a ponerle el foco al e->SetFocus();

Escribo de memoria y no tengo el C++ Builder a mano, así que las llamadas podrían no ser la correctas, pero te haces a la idea.

47
C/C++ / Re: funcion recursiva! :)
« en: Viernes 11 de Marzo de 2011, 14:12 »
¿Qué pasa si cuando pides el tamaño del arreglo te introducen 40? No compruebas los límites.

Y ahí yo no veo nada recursivo...

48
Visual C++ / Re: como hace que la form cambie
« en: Jueves 10 de Marzo de 2011, 17:51 »
Aunque tu estás preguntando de C# y esto es un foro de C++, a ese tipo de ventanas se les llama "splash window". Busca en internet que hay una buena cantidad de ejemplos.

Pero busca con C#, no con C++.  :wacko:

49
Visual C++ / Re: Error con cast.
« en: Jueves 3 de Febrero de 2011, 20:38 »
Pues no te lo puedo confirmar exactamente.

Es que hay diferencias entre C y C++. C++ es más estricto con los tipos, en C casi puedes juntar peras con manzanas sin problemas... Si los estás compilando en GNU como C, lo mismo Visual C++ compilado como C también traga...

De todos modos, si quieres estar seguro, búscate el "Comeau" Frontend y mete ese código (el tuyo y el mío). El que no entre en el Comeau es que no es código correcto.

50
Visual C++ / Re: Error con cast.
« en: Jueves 3 de Febrero de 2011, 16:37 »
Me pa que los paréntesis del cast están mal...

Esto sí fona:

#include "stdafx.h"
#include <windows.h>
char code[] = "aquí va una shellcode";
typedef void (*pfnc_initDevice)(void);

int _tmain(int argc, _TCHAR* argv[])
{
   pfnc_initDevice pfnc=(pfnc_initDevice)&code[0];
   pfnc();
   return 0;
}

Páginas: 1 [2] 3 4 ... 7