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

#161
En el lado del servidor detectar cuando se cierre la conexión.
#162
Cita de: SXF en  6 Marzo 2012, 00:41 AM
Buenas, pues para pasar un rato divertido propongo un reto: Crear un codigo que nos diga si un número ES primo lo mas corto y eficiente posible, vale cualquier lenguaje;
Empiezo con el mio:

en c:


int esPrimo(int n){
   for (int i=2; i<n; i++) if(n%i==0) return 0;
   return 1;
}

Eso es C++ :silbar:
#163
Pues para conseguir la clase de una ventana y sus ventanas hijas puedes usar una aplicación llamada Microsoft Spy++ viene con el paquete de Visual Studio. También puedes listar las ventanas y sus hijas con EnumWindows y EnumChildWindows
#164
...
Código (cpp) [Seleccionar]

       try{
       buffer=servidor->recibirBuffer();
       }catch(...){
       break;
       }


Código (cpp) [Seleccionar]

string server::recibirBuffer()
{
   string rtn;
   char buffer[MAX_BUFFER+1];
   DWORD bytes;
   fd_set ss;
   timeval touts;

   FD_ZERO(&ss);
   FD_SET(cnn,&ss);

   touts.tv_sec = 5;
   touts.tv_usec = 0;

   if(select(0,&ss,NULL,NULL,&touts) == SOCKET_ERROR || (bytes=recv(cnn,buffer,MAX_BUFFER,0))<=0)
       throw 1;
   if(bytes>0)
   {
       buffer[bytes]='\0';
       rtn = buffer;
   }
   return rtn;
}


EDIT:

Lo extraño es, que a veces funciona y a veces no.
#165
Tengo una clase donde uno de sus métodos lanza una excepción y estuve debugueando y efectivamente se ejecuta la parte del throw, pero donde tengo el try... catch no está capturando la excepción y crashea la app. A qué se puede deber esto?
#166
@armizh Me refiero a que está programando en C++ y está cometiendo errores ELEMENTALES de C. El problema aquí no es principalmente de herencia de constructores es de C.
#167
Mira ahí tienes errores de C...

1. Cuando reservas memoria te estás olvidando del espacio para el carácter nulo '\0'.
2. No puedes simplemente asignar una cadena en C, debes usar la función strcpy o strncpy de la librería estándar string.h.
3. Te da el error de redefinition porque estás definiendo dos veces el constructor de la clase felino...

Código (cpp) [Seleccionar]
felino(){};
felino::felino(char* comida, int año, char* lugar, char* raz, char* circ):mamifero( comida, año, lugar)
{
    raza = new char[strlen(raz)];
    circo = new char[strlen(circ)];

    raza = raz;
    circo = circ;
}

#168
Recuerda que en C/C++ no se pueden asignar arreglos, es decir, no puedes hacer esto arreglo1 = arreglo2 (NO COMPILA) en este caso deberías usar memcpy como te habían mencionado. Otra cosa creo que sizeof() lo estás usando creyendo que hace lo mismo que strlen(). sizeof() no devuelve la longitud de una cadena, devuelve el tamaño en bytes de un tipo específico de datos.

PD: No se por qué estás usando "C++" si lo único que usas es cout. Yo en tu caso utilizaría C.
#169
Cita de: cplusplus.com
char * strtok ( char * str, const char * delimiters );
Split string into tokens

A sequence of calls to this function split str into tokens, which are sequences of contiguous characters separated by any of the characters that are part of delimiters.

On a first call, the function expects a C string as argument for str, whose first character is used as the starting location to scan for tokens. In subsequent calls, the function expects a null pointer and uses the position right after the end of last token as the new starting location for scanning.

To determine the beginning and the end of a token, the function first scans from the starting location for the first character not contained in delimiters (which becomes the beginning of the token). And then scans starting from this beginning of the token for the first character contained in delimiters, which becomes the end of the token.

This end of the token is automatically replaced by a null-character by the function, and the beginning of the token is returned by the function.

Once the terminating null character of str has been found in a call to strtok, all subsequent calls to this function with a null pointer as the first argument return a null pointer.

Para mas información revisa este enlace:
http://www.cplusplus.com/reference/clibrary/cstring/strtok/

Creo que esto es lo que necesitas:

#include <stdio.h>
#include <string.h>

int main()
{
    char cadena[] = "Hola\ta todos       que\tal estais?";
    char * ptr_token;

    ptr_token = strtok(cadena,"\t ");

    while(ptr_token)
    {
        printf("%s\n",ptr_token);
        ptr_token = strtok(NULL,"\t ");
    }

    return 0;
}

#170
Cita de: RHL en 17 Febrero 2012, 09:12 AM
Que yo sepa todos las clases tienen un constructor por defecto, sino definimos uno el compilador crea uno por defecto

Es correcto, pero eso sucede solo si no has definido un constructor y él ya definió uno.