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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 ... 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 [90] 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 ... 401
891  Programación / Java / Re: Ayuda con Switch anidados en: 3 Diciembre 2016, 22:55 pm
Y eso te respondo. Con esas técncias, puedes hacerlo.
892  Programación / Programación C/C++ / Re: Haciendo un chat por sockets en: 3 Diciembre 2016, 16:03 pm
Si el sendto retorna SOCKET_ERROR (-1), utiliza la función WSAGetLastError Para ver qué error hubo.
Aquí ves qué significa cada valor devuelto por WSAGetLastError: https://msdn.microsoft.com/en-us/library/windows/desktop/ms740148(v=vs.85).aspx
893  Programación / Java / Re: Ayuda con Switch anidados en: 3 Diciembre 2016, 12:56 pm
Lo normal es que vaya a donde quieras de forma "natural". Por ejemplo, tienes un do-while. Su condición, si es false, lo haría salir al anterior, y luego lo mismo para el B.
También puedes poner una flag:
Código
  1. boolean salir = false;
  2. do{
  3.    // switch
  4.    salir = true;
  5. }while(/* tu condición */ && !salir);

Otra opción, es con el "break with label":
Código
  1. search:
  2. for (i = 0; i < arrayOfInts.length; i++) {
  3.    for (j = 0; j < arrayOfInts[i].length; j++) {
  4.        if (arrayOfInts[i][j] == searchfor) {
  5.            foundIt = true;
  6.            break search;
  7.        }
  8.    }
  9. }
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html


Siempre que puedas, mi recomendación es que lo hagas sin labels, de la forma más estructurada posible (Otros lenguajes no te permitirán hacer lo del label)

Otra opción, sería dividir el código en funciones (donde sean necesarias). Así, tendrás 2 posibilidades: break y return. Return saldrá de todos los loops y switchs, mientras que break solo del primero.
894  Programación / Programación C/C++ / Re: Exploit Writing de Corelan, capitulo 3 en: 30 Noviembre 2016, 22:31 pm
Tendrás que usar el compilador de Microsoft. Puedes hacerlo con Visual Studio.
No tengo mucha más información de ello. Cada compilador añade sus cosillas no-estándar a los lenguajes.
895  Programación / Programación C/C++ / Re: Exploit Writing de Corelan, capitulo 3 en: 30 Noviembre 2016, 21:05 pm
__try y __except son extensiones de Microsoft. Si compilas ese código con Visual Studio, te debería ir.
896  Programación / Programación C/C++ / Re: Funciones, Strings... Unicode. C++ en: 29 Noviembre 2016, 16:27 pm
1) ¿Por que pasa esto?, ¿cual es el problema?, ¿para que sirve la 'L', por ejemplo: 'L"string"'.
MessageBoxW requiere wide-chars (wchar_t), al finy  al cabo, es para lo que funciona. Los parámetros deben ser "wide char":
Código
  1. MessageBoxW(0, L"Texto", L"Título", MB_OK | MB_ICONINFORMATION);
Ambos. La 'L' implica que una cadena en vez de ser char*, es wchar_t*.

Interesante ver que el código, para utilizar bien los L"", debe estar en una codificación diferente a ANSI (UTF-8, por ejemplo).


2) ¿como declaro y uso una variable de tipo LPWSTR?
L"texto" es una LPWSTR. wchar_t* o WCHAR*. Son lo mismo.
LPWSTR == Pointer to Wide String
LPCWSTR == Pointer to Constant Wide String

La diferencia entre estos tipos y char es que wchar_t suele ser de mayor tamaño que char. (char -> 1 byte, wchar_t -> 2 bytes)
También existen char16_t y char32_t, como curiosidad.


4) ¿cual es la diferencia entre wchar_t, char32_t, WCHAR, TCHAR?, ¿cual debo usar?.
En caso de querer información sobre un tipo, tienes varias opciones.
Una rápida es forzar un error, y el compilador te suele decir qué tipos son:
Código
  1. TCHAR c = "error";
Código:
error: invalid conversion from 'const char*' to 'TCHAR {aka char}'
Ahí ya nos dice que TCHAR es un char.

Otra opción, dado que son tipos de Windows, es visitar sus referencias:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx
Ahí explica qué es TCHAR:
Código
  1. #ifdef UNICODE
  2.    typedef WCHAR TCHAR;
  3. #else
  4.    typedef char TCHAR;
  5. #endif

Y finalmente, otra:
Código
  1. #include <windows.h>
  2. #include <typeinfo>
  3.  
  4. int main(){
  5. cout << typeid(TCHAR).name() << endl;
  6. }
Ese nombre a veces no es muy descriptivo. Pero puedes comparar nombres. Si 2 nombres son iguales, los tipos son iguales.
Si no te interesa el nombre, puedes hacer una comparación directa:
Código
  1. cout << (typeid(TCHAR) == typeid(char)) << endl;


3) ¿por que Code::Blocks usa Ansi por defecto (o tal vez tiene que ver el compilador)?, ¿por que no se muestra el texto que contiene caracteres, por ejemplo, acentuados (hablo del uso de, por ejemplo, con 'cout')?.

Code::Blocks -> Settings -> Editor -> Other Settings
Ahí elijes codificación.
En el caso de mi compilador, utiliza OEM-850 (u otro parecido, no me fijé)


5) ¿debo tener en cuenta algo al ejecutar mi programa en otra versión de Windows (sobre este tema)?.
En principio no. De existir algún problema, nunca me ha ocurrido.

6) ¿como convierto entre una página de códigos a otra?, ¿cual me recomiendan usar y como?.
Estas dos funciones te pueden ayudar:
MultiByteToWideChar
WideCharToMultiByte
897  Programación / Programación C/C++ / Re: Ayuda: pasar por parametro de un metodo a una clase en: 29 Noviembre 2016, 15:55 pm
Código
  1. virtual void Transferir(Cuenta, double) = 0;

Dentro de ICuenta estás utilizando una clase (Cuenta) que no ha sido declarada aun.
Querrías poner:
Código
  1. virtual void Transferir(ICuenta*, double) = 0;
Si es así, solo sería poner eso (teniendo en cuenta que debes poner o puntero o referencia (&).

Si realmente quieres utilizar Cuenta, entonces pon antes de ICuenta:
Código
  1. class Cuenta;
  2.  
  3. class ICuenta
  4. {
  5. std::string Nombre;
  6. double Saldo;
  7.  
  8. public:
  9. virtual void Extraer(double) = 0;
  10. virtual void Depositar(double) = 0;
  11. virtual void Transferir(Cuenta, double) = 0;
  12. };
Así, el compilador sabe que existe esa clase (aunque no sepa nada de ella).
898  Programación / Programación C/C++ / Re: ayuda error al compilar c++ con ALLEGRO5 en: 27 Noviembre 2016, 17:57 pm
No estoy seguro, pero como dice que requierepthread, prueba agregando -lpthread
899  Programación / Programación C/C++ / Re: ayuda con multiplicacion de n numeros complejos en: 27 Noviembre 2016, 16:28 pm
http://www.ditutor.com/numeros_complejos/multiplicacion_complejos.html

Ve número a número. Colocas el primero en variables (r, im, por ejemplo). Luego, lo multiplicas por el siguiente y lo almacenas en esas mismas variables. Y así por cada uno de los restantes. Que el producto quede siempre en esas variables. Y ya luego, las muestras.

De todos modos, no sé si entendí bien lo que hace tu programa.
Unos consejos importantes:
- Tabula el código.
- Separa las funciones por 1 salto de línea al menos.
- Utiliza la misma forma de nombrar las funciones (si las funciones empiezan por mayúscula, vale. Si empiezan por minúscula, así sea. Pero no mezcles nomenclaturas)
- Si una función void termina, no necesitas ponerle "return;" al final. Pero bueno, pónselo si quieres, solo comento.
900  Programación / Programación C/C++ / Re: problema vectores c en: 27 Noviembre 2016, 14:57 pm
Y luego:
Código
  1. for(i=0; i<n; i++){
  2.        for(j=1; j<=n; j++)
j<=n va a coger un valor fuera del rango. Querrías poner i<n-1 y j<n.
Páginas: 1 ... 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 [90] 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 ... 401
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines