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

#1211
Basta llamar WSAStartup 1 vez por programa, salvo que realmente necesites hacerlo varias veces.
Si llamarlo más veces te soluciona el problema, ten en cuenta que el verdadero error ha de seguir ahí.
#1212
geeke, Kaxperday, AlbertoBSD, pide la representación binaria de un número, dada su representación decimal. Nada de bits ni ni estándares.

alexisrojas, dices que lo has tratado de hacer en C. ¿Puedes poner el código y los errores que este te genera? O al menos decir concretamente qué problemas te da.
#1213
Cita de: Kaxperday en  9 Junio 2016, 17:33 PM
Habrá que comprobar que headers esta vacío

¿Qué utilizas del header? ¿Existe? Si no existe, o usas uno por defecto, o tiras error.

Por ejemplo, si Properties fuera un map<string,string>, donde la clave fuera el nombre del header:
-Cuando vayas a colocar el host, primeor lo buscas. Si noe xiste, 1 de 2: o pones el que tu programa genera, o tiras error.

La pregunta es: Si la función va a tirar error, ¿para qué le quieres pasar un valor "nulo"? En caso de que no tires error por ello, ¿para qué comprobar? Utilizas los datos que existan, y no utilizas los datos que no existan.

Y bueno, en caso de que ninguna de estas sirva, como un dato que sea opcional, pedir un puntero está bien, y no tienes porqué utilizar memoria dinámica. Basta utilizar el operador de referencia, &, a la hora de pasar el parámetro (o poner nullptr en caso de que lo quieras nulo).

Cita de: Kaxperday en  9 Junio 2016, 17:33 PM
pero eso de la heap lo odio.
Yo odio las multiplicaciones en matemáticas, no sé por qué deberían existir.
#1214
Veamos. En un static, no estás trabajando con ningún objeto, por tanto, no hay miembros con los que trabajar (salvo otros miembros static.

Para acceder a los miembros de ese objeto TSay, tendrás primero que obtener ese objeto. CreateWindowEx tiene un parámetro, el último, que es el LPARAM que recibirá la función en el mensaje WM_CREATE. Puedes pasarle por ahí un puntero al objeto, por ejemplo.

Aunque claro, así solo sabrás ese dato la primera vez. Para conocer el objeto de TSay en cada llamada, algo que puedes hacer es almacenarlo en otro miembro static, y utilizar ese miembro las próximas llamadas al callback.

Por ejemplo, yo haría un map<LONG, TSay*>, donde el LONG sería el identificador de la ventana, que obtienes con la función GetWindowLong.

Ciertamente esta parte tiene algo más de enjundia, pero bueno. Una vez hecho, hecho queda xD
#1215
Para evitar trabajar con excepciones, que relentizan el programa, puedes utilizar simplemente:
Código (cpp) [Seleccionar]
int ServeFile(Response& out, std::string uri, Properties header)

Un retorno que marque el error (0 si no hay, por ejemplo), y en caso de que no haya error, modificas el primer parámetro (en este caso).

Si es parte de un conjunto de funcionalidades más grande, también puedes hacer una función tipo "getLastError()", y utilizarlo así:
Código (cpp) [Seleccionar]
Response resp = serveFile();
if(getLastError()==0){
    // No error
}
#1216
Parece una mala traducción del inglés xD
#1217
En C++ no tienes que poner "struct player" cuando usas el tipo. Basta con poner "player".

Si eso no lo soluciona, pon "std::list<player>", por si acaso usases alguna librería que también haya definido su propia "list"
#1218
Cita de: cgrs en 28 Mayo 2016, 23:06 PM
Efectivamente, el profesor la utilizaba creo que para duplicar un bloque de memoria, con el tamaño que quisiera, pero como no estoy muy seguro de sus motivos, dejaré de lado el uso de esa función  ::)

memcpy(A,B, N)
Copia N bytes de la dirección B a la dirección A, no más. Se suele usar más que nada para vitar hacer el bucle:
Código (cpp) [Seleccionar]
for(int i=0; i<N; i++) A[i] = B[i];
#1219
memcpy es una función de la librería string.h (cstring en C++)
#1220
Cita de: cgrs en 28 Mayo 2016, 21:38 PM
Y, ya que estamos, ¿en C++ como se podría hacer? porque justamente es lo que estoy utilizando para la manejar la API de Win32 (que es un dolor viviente).

Muchas gracias por tu respuesta ;)
En C++ es idé3ntico, salvo porque hacerlo con clases es más peligroso (según). Si utilizas malloc para reservar espacio para una clase o estructura, no llamarás a los constructores, lo que puede desencadenar problemas.