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

#661
Pideselo a la editorial... deviste haber revisado el libro a la hora de la compra...

Dulces Lunas!.
#662
ammm...



#define SIZE_RUT 15
#define SIZE_NAME 15
#define SIZE_SURNAME 15

//typedef struct DataClient_ DATACLIENT, *LPDATACLIENT;
//typedef struct Node NODE, *LPNODE;

typedef
struct DataClient_
{
    char szRut[SIZE_RUT];
    char szName[SIZE_NAME];
    char szSurName[SIZE_SURNAME];
}
DATACLIENT, *LPDATACLIENT;

typedef
struct Node_
{
   DATACLIENT dataClient;
   Node_* lpNext;
}
NODE, *LPNODE;;

/*
///No le veo utilidad a esta estructura...
typedef
struct LIST
{
    Nodo *lpBEGIN;
}
LIST, *LPLIST;
*/

void unloadNodes(LPNODE lpNode)
{
    if (!lpNode)
        return;
    unloadNodes(lpNode->lpNext);
    fprintf(stdout, "%s\n", lpNode->dataClient.szName); //  Antes de descargas mostramos...
    free(lpNode);
}

int main()
{
    LPNODE lpNodeFirst = (LPNODE)malloc(sizeof(NODE));
    LPNODE lpNodeNow = lpNodeFirst;
    int i = 0;

    for (i = 0; i < 10; ++i)
    {
        memset(lpNodeNow->dataClient.szName, 0, (SIZE_NAME - 1));
        fgets(lpNodeNow->dataClient.szName, (SIZE_NAME - 1), stdin);
        lpNodeNow->lpNext = (i < 9) ? (LPNODE)malloc(sizeof(NODE)): NULL;
        lpNodeNow = lpNodeNow->lpNext;
    }
    /// Descargar TODOS los Nodos empesando desde el ultimo.
    unloadNodes(lpNodeFirst);

    return EXIT_SUCCESS;
}



Dulces Lunas!.
#663
independientemente de como tengas la lista...



    char szReaderBuffer[255];
   
    memset(szReaderBuffer, 0, 255);         //  No es necesario pero yo siempre lo hago...
    fgets(szReaderBuffer, 255, stdin);      //  Escaneamos la entrada de datos NO IMPORTA SI HAY ESPACIOS... solo importa la longitud!¡.
    fprintf(stdout, "%s\n", szReaderBuffer);//  Imprimimos.
//    fflush(stdout);                         //  Forzamos la salida de datos... Solo si hay errores...
   
    return EXIT_SUCCESS;



Si no te sirve el codigo anterior entonces hay algo mal declarado en tu codigo...

Nota: http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Dulces Lunas!¡.
#664
Programación General / Re: Programar juegos 8 bits!
25 Diciembre 2011, 10:42 AM
Esos dibujos son imagenes de este tipo.



Lo que se hace es calcular pequeños rectangulos de la imagen original y aplicarle un fondo transparente lo demas es una programacion dirigida a un espacio 2D (No el tipo de programación)...

Los juegos 2D son mas faciles que los 3D... nativamente escribiendo codigo y resolvieldo problemas... por ejemplo coliciones de objetos en 3D (Hay variados metodos)... el juego mas facil de crear en 2D a ojo de buen "Cubero" es el Galaxy o Invaders.

Dulces Lunas!¡.
#665
Ingeniería Inversa / Re: ImageBase cambia...
23 Diciembre 2011, 00:01 AM
Cita de: ignorantev1.1 en  1 Diciembre 2011, 21:54 PM
Perfecto @Иōҳ...

Saludos!

ReadProcesMemory...

Dylces Lunas!¡.
#666
Programación C/C++ / Re: ¿Socket cerrado?
22 Diciembre 2011, 21:37 PM
Si tu idea es detectar de manera automatica dicho evento vas a tener que usar HILOS + Semaforos o Mutex quieras o no (Es lo mas viable), la de mandar a cada rato algo con send no es viable...

Un ejemplo mas completo (OJO solo el Cliente)... NO esta terminado ese ejemplo pero la idea de como detectar la desconexion de un Socket esta en  void myCallDataArrival(CSocketBase* t)... esta en C++...

Dulces Lunas!¡.
#667
Programación C/C++ / Re: ¿Socket cerrado?
22 Diciembre 2011, 12:49 PM
cuando creas el socket crea un hilo que manipute recv() con el buffer predeterminado del SO, si retorna SOCKET_ERROR o 0 (Son dos casos particulares), es que el Socket se ha cerrado abruptamente, este metodo es el que uso y SIEMPRE me ha servidor!¡.

por ejemplo yo uso este proceso para detectar dicho evento:

Código (cpp) [Seleccionar]


/***
CallBack RequestData
-> Esta clase es friend de CSockBase, CSockClient y CSockServer.
***/

void*
myCallDataArrival
(
void* p // Puntero a la clase Base CSockBase
)
{
    char* szBuff = NULL;
    char* szNewBuff = NULL;
    int iRetSize = 0;
    LPCSOCKBASE t = (LPCSOCKBASE)p;

    if (!t)
    {
        t->threadDataArrival = {};
        pthread_exit(NULL);
        return NULL;
    }

    szBuff = new char[t->uiBuffRcv];

    do
    {
        iRetSize = recv(t->mySock, szBuff, t->uiBuffRcv, 0);

        if (iRetSize == SOCKET_ERROR || iRetSize == 0 ) // ¿Se ha desconectado el Socket?...
            break;  //  Exit do|while(1)

        szNewBuff = new char[t->udtBuffRcv.size + iRetSize];

        memcpy(szNewBuff, t->udtBuffRcv.szData, t->udtBuffRcv.size);
        memcpy(&szNewBuff[t->udtBuffRcv.size], szBuff, iRetSize);

        delete t->udtBuffRcv.szData;

        t->udtBuffRcv.szData = szNewBuff;
        t->udtBuffRcv.size += iRetSize;

        if (t->pEventDataArrival != NULL)
        { //Activacion del evento de Recepcion de Datos...
            pthread_mutex_lock(&t->mutexDataArrival); // Bloquemos para que no se creen mas de los necesarios.
            t->pEventDataArrival(t); // evento Volatile
            pthread_mutex_unlock(&t->mutexDataArrival); // Habilitamos.
        }
    }
    while(1);

    t->close();// Cerramos...

    if (t->pEventClosed)
        t->pEventClosed(t);

    t->threadDataArrival = {};
    pthread_exit(NULL);

    return NULL;
}




Dulces Lunas!¡.
#668
Programación C/C++ / Re: wait() en c++ (windows)
22 Diciembre 2011, 12:41 PM
Cita de: soyloqbuskas en 22 Diciembre 2011, 02:22 AM
Pero al final con el codigo de BlackZeroX (Astaroth) me ha funcionado perfectamente. Lo unico que del codigo hay que cambiar 2 null por false.

Los NULL que remplazaste vos por FALSE realmente son 0's...

Nota: Como recalca Eternal Idol, solo debes procesar los mensajes... y como este es un Hook, solo nesesitas tratar los mensajes que llegan le llgan al proceso, para hacer eso se usa el proceso que te he proporcionado (falta hacerle un TranslateMessage()). Otra manera (Va a dar el mismo resultado) es create una Ventana e instalarle a su Handle al Hook... es mas trabajo y por ende mas codigo, en mi consideracion no vale la pena esto ultimo.

Dulces Lunas!¡.
#669
Eso me pasa por seguir a otros...

Dulces Lunas!¡.
#670
Programación C/C++ / Re: wait() en c++ (windows)
21 Diciembre 2011, 23:06 PM
No se que intentas hacer... pero puedes usar un Do While o While (Como quieras) + WaitMessage()... de esta manera el do while avanzara sin comerte el procesador al ~100%.

Edito--->

Tambien puedes usar varias APIS que tratan los mensajes (WaitMessage(), GetMessage(), DispatchMessage(), etc...) Ejemplo: Aquí

Edito:--->

Ya lei tu problema Concreto!¡.

Agrega este Proceso y LLAMALO En lugar de tu MessageBox(), con esto se arregla tu problema:

Código (cpp) [Seleccionar]


voidProcessMessages()
{
    MSG msg;
    while (GetMessage(&msg, NULL, NULL, NULL) != -1)
        DispatchMessage(&msg);
}



Dulces Lunas!¡.