elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ... 125
191  Programación / Programación C/C++ / Re: RegQueryInfoKey -> Retorna un numero erroneo? en: 27 Octubre 2014, 15:20 pm
Código
  1. TCHAR buffer[512] = "";
  2. DWORD largo_buffer;// = MAX_PATH;

largo_buffer debería contener el tamaño máximo del buffer... y sin embargo la variable está sin inicializar, eso puede provocar que se pise memoria al leer datos del registro. Por cierto, "largo_buffer=MAX_PATH" seguirá estando mal, ya que el tamaño que estás asignando al buffer es 512.

Además, creo recordar que estas funciones trabajan con wchar_t, no con char... sería conveniente poner el prefijo "L" al string de la ruta: L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"

Por lo demás no he visto nada raro.

Un saludo.




192  Programación / Programación C/C++ / Re: Problemas al recibir respuesta web iniciando sesión cpp en: 27 Octubre 2014, 13:58 pm
De todas formas eso de strcmp() no sé como sería

Si lo piensas, no es escusa. No vas a conseguir hacer nada por tu cuenta si no eres capaz de leer y entender la documentación de una API.

¿Que cuesta? sí, pero es un paso necesario y después verás que no es para tanto. Lo que está claro es que si sigues vendiendo que eres novato para justificar el echo de no perder ni 2 minutos en leer la documentación de una función... de la librería estándar... te vas a acabar estrellando contra un muro. Yo únicamente te aviso.

de todas formas si así distingue bien las cookies no se para que darle más vueltas xP.

A diferencia de algo tangible y material, el código es algo virtual que no tiene forma, el código crea un universo propio en el que todo está conectado con todo y en el que se exige una armonía casi total entre los diferentes elementos del programa para que éste no de problemas... las chapuzas en programación no solo pueden dar resultados inesperados en cualquier momento... su corrección a posteriori puede resultar traumática porque sus efectos se pueden propagar de forma similar a como lo puede hacer un cáncer.

Por este motivo te digo que no, no es lo mismo hacer algo bien a hacer una chapuza y dejarlo así simplemente porque funciona. Obviamente tú, en calidad de autor de la aplicación, puedes hacer y dejar todas las chapuzas que quieras en tu código, pero luego cuando tengas que lidiar con fallos anclados en estas chapuzas recuerda lo que te estoy diciendo.

Soy un novato con esto (de todas formas por supuesto quiero aprender si queréis compartir conmigo apuntes de HTTP sobre esto será un placer estudiarlos xD)

Especificación http ver 1.1

Si vas a trabajar con el protocolo http, la especificación de dicho protocolo debe ser la base de tu documentación. Después seguramente necesites material adicional, como ejemplos o comentarios de gente que ya se haya pegado con eso... pero la base es fundamental para entender lo que estás haciendo... si no es intentar entender un libro de astronomía sin tener ni idea de matemáticas, física, geometría, ...

... y comience a postear en temas automáticamente para obtener beneficios

Intentas ir demasiado rápido, y no lo digo por este tema en concreto sino por todos los que has creado en este foro. Aprende primero la base con ejemplos más sencillos y con más tranquilidad podrás lanzarte a la aventura.

Da la sensación de que tus únicos objetivos en este foro pasan por sacar partido sin aportar absolutamente nada ( es decir, te sacamos las castañas del fuego, tus programas funcionan y después, si te he visto no me acuerdo ). Y si no no hay más que ver otros hilos, en lo que lo único que te preocupaba era que alguien te diese la respuesta concreta y exacta a tu pregunta... nada de darte ideas sobre cómo resolverlo...

A veces se sobrescribe parte de la respuesta, no se porqué.

Nuevamente te falta leer la documentación. En este caso referente a sockets: documentación recv

Tu estás partiendo de la base de que el contenido recibido por un socket nunca va a ser binario... y eso es un error. Por un socket puedes enviar contenido binario sin ningún problema. Ello implica que los sockets no tienen por qué terminar las cadenas de envío/recepción con un '\0'. Es por eso que recv te retorna la longitud exacta de lo que almacena en el buffer.

(Acabo de probarlo de nuevo, y oh lala me debe de enviar 23000 caracteres de respuesta es decir el html, pero no veo nada solo basura..)

Si tu buffer es de 20000, por muy bien que quieras hacer el resto ya tienes un problema.

Además, si te fijas, verás que su respuesta está comprimida con gzip... ¿ves como es importante conocer la especificación?

Y para terminar, por si acaso matizo: No intento ser borde, los foros son fríos porque no transmiten ni emociones ni lenguaje no verbal.

Y sí, me he leído tu mensaje hasta el final :)

Un saludo.
193  Programación / Programación C/C++ / Re: Problemas al recibir respuesta web iniciando sesión cpp en: 27 Octubre 2014, 11:50 am
Deberías plantearte dejar de imitar a firefox y leerte la especificación http... ya que es ahí donde vas a ver para qué sirve cada uno de los elementos que componen una cabecera http, cómo se usan, cuándo hay que usarlos y cuáles son obligatorios y por qué.

Además, como te han recomendado, una de tus prioridades debería ser simplificar el código y crear un control de flujo limpio, ordenado y fácil de mantener.

Y, por cierto, ¿qué es toda esa basura que sale en tu respuesta al final de cada petición?
194  Programación / Programación C/C++ / Re: Tengo que hacer un programa de una areolinea en: 27 Octubre 2014, 11:46 am
Lo más sencillo es leer la totalidad del fichero en memoria, creando una colección de instancias de "alumno" en el proceso, después modificas esta colección a placer y por último sobreescribes el fichero, borrando todo lo anterior y guardando lo que tienes actualmente en memoria.
195  Programación / Programación C/C++ / Re: Ordenar alfabeticamente Nombres (Struct) en: 22 Octubre 2014, 18:32 pm
No afecta... pero tampoco aporta nada... un parámetro de una función o una variable que declares únicamente pueden ser tipos nativos (int, float, double...), estructuras, clases y/o templates (que para el caso es como si fuesen clases)... los tipos nativos son conocidos por todos, luego si no es un tipo básico está claro que vas a a tratar con un objeto.
196  Programación / Programación C/C++ / Re: Crear sockets con cualquier protocolo en: 22 Octubre 2014, 13:28 pm
Si quieres un control total, con todas las consecuencias, la mejor opción es pasarse a linux
197  Programación / Programación C/C++ / Re: Ordenar alfabeticamente Nombres (Struct) en: 22 Octubre 2014, 13:12 pm
Opción 1: ordenamiento explícito

Nos aprovechamos de la función "sort" definida en la librería algorithm. A esta función necesitamos pasarle una función que defina la forma en la que han de ser ordenados los elementos.

Código
  1. #include <algorithm>
  2.  
  3. // ...
  4.  
  5. bool SortData( const Employees& emp1, const Employees& emp2 )
  6. {
  7.  return emp1.Naame < emp2.Naame;
  8. }
  9.  
  10. int main( )
  11. {
  12.  // ...
  13.  
  14.  cout << "-------EMPLOYEES SORTED ALPHABETICALLY----- \n\n";
  15.  std::sort( Data, &Data[LEN], SortData );
  16.  
  17.  // ...
  18. }

Opción 2: sobrecarga de operadores

Si sobrecargamos el operador '<' de la clase "Employees", podemos ahorrarnos la función "SortData" definida en el ejemplo anterior:

Código
  1.  
  2. struct Employees
  3. {
  4.    string Naame;
  5.    unsigned int age;
  6.    char sex;
  7.  
  8.    struct Direction home;
  9.  
  10.    bool operator<( const Employees& otro ) const
  11.    {
  12.      return Naame < otro.Naame;
  13.    }
  14. };
  15.  
  16. // ...
  17.  
  18. int main( )
  19. {
  20.  // ...
  21.  
  22.  cout << "-------EMPLOYEES SORTED ALPHABETICALLY----- \n\n";
  23.  std::sort( Data, &Data[LEN] );
  24.  
  25.  // ...
  26. }

También se puede sobrecargar el operador fuera de la estructura... en ese caso es necesario que la función sea binaria (2 operadores):

Código
  1. struct Employees
  2. {
  3.    string Naame;
  4.    unsigned int age;
  5.    char sex;
  6.  
  7.    struct Direction home;
  8. };
  9.  
  10. bool operator<( const Employees& emp1, const Employees& emp2 )
  11. {
  12.  return emp1.Naame < emp2.Naame;
  13. }

Otras consideraciones:

* En C++ no hace falta usar "struct" cada vez que quieres crear un nuevo elemento de tipo "Employees".

* En C++ es mejor usar "const" a "define". El motivo es que "define" no indica el tipo de valor ( entero, decimal, ... ) y eso puede dar lugar a resultados no esperados en el código.

* El parámetro "i" que pasas con tanta alegría en las 3 funciones te lo puedes ahorrar... se pueden declarar variables sin miedo dentro de las funciones.

* Salvo causas de fuerza mayor, yo sustituiría los usos de "char*" en la dirección por "std::string".
198  Programación / Programación C/C++ / Re: como almacenar correctamente unsigned *char a MSQL (Almacenar una imagen) en: 15 Octubre 2014, 12:17 pm
Edita el código y utiliza las etiquetas GeSHi de C++ para que el código se pueda leer sin dejarnos la vista, por favor.
199  Programación / Programación C/C++ / Re: porcentaje en c en: 5 Octubre 2014, 13:36 pm
Y aunque suene a obvio, lo comento por si acaso... estos cálculos tienes que hacerlos con float o double... si los haces con int vas a obtener resultados incorrectos al perder los decimales.
200  Programación / Programación C/C++ / Re: Cambio en billetes y monedas en C++ en: 2 Octubre 2014, 08:35 am
En lugar de
Código
  1. billetes=(int) sobra/100;
  2. printf("\n %d billetes de 100", billetes);
  3. sobra=(int) cambio%100;
  4.  
Debería ser
Código
  1. billetes=(int) sobra/100;
  2. printf("\n %d billetes de 100", billetes);
  3. sobra=(int) sobra%100;
  4.  

No hace falta hacerlo así. Te lo demuestro:

supón un cambio de 265. esto son un billete de 200, uno de 50, una moneda de 10 y otra de 5
Código
  1. cambio = 265
  2. billetesA = 265 / 200 = 1 <-- 1 de 200
  3.  
  4. sobra = 265 % 200 = 65
  5. billetesB = 65 / 100 = 0  <-- 0 de 100
  6.  
  7. sobraB = 265 % 100 = 65
  8. billetesC = 65 / 50 = 1   <-- 1 de 50
  9.  
  10. sobraC = 265 % 50 = 15
  11. billetesD = 15 / 20 = 0   <-- 0 de 20
  12.  
  13. sobraD = 265 % 20 = 15
  14. monedaA= 15/10 = 1        <-- 1 de 10
  15.  
  16. sobraE = 265 % 10 = 5
  17. monedaB = 5 / 5 = 1       <-- 1 de 5
  18.  
  19. sobraF = 265 % 5 = 0
  20. monedaC = 0 / 2 = 0       <-- 0 de 2
  21.  
  22. sobraG = 265 % 2 = 0
  23. monedaD = 0 / 1 = 0       <-- 0 de 1
Páginas: 1 ... 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ... 125
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines