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

#271
Vale hombre, no hagamos un flame de esto xD

Tan sólo me pareció raro, porque siempre pensé que el tipo long en Windows era de 4 bytes.

En mi Debian, con gcc version 4.4.5 (Debian 4.4.5-8) y Linux 2.6.32-5-686:


#include <stdio.h>

int main(){

printf("%d %d %d\n",sizeof(int),sizeof(long),sizeof(long int));

return 0;

}


Me da esto:
4 4 4

Saludos.

#272
BlackZeroX no se de donde sacaste eso de los números long, pero yo tengo Win7 SP1 64 bits y haciendo un sizeof al tipo long me dice que son 4 bytes. Todo esto usando el Visual C++ 2010.

Saludos.
#273
Los números long son de 4 bytes por lo tanto tienen 32 bits. Yo lo hice con un número de 8 bits, o sea, de tipo unsigned char.

Código (cpp) [Seleccionar]

#include <iostream>

int main(int argc, char * argv[])
{
unsigned char numBin[8], numero = 5;
unsigned char aux = 0;

for (int i = 0; i < 8; i++)
{
aux = numero >> (7 - i);
aux = aux << 7;

if (aux == 128)
numBin[i] = 0x31; //Un 1
else
numBin[i] = 0x30; //Un 0
std::cout << numBin[i];
}
std::cin.get();
return 0;
}


Son puras matemáticas, se van desplazando los bits de derecha a izquierda para conseguir que quede 128, si es así significa que el bit actual es 1.

Saludos.
#274
Creo que te falta un cin.clear() en el código de la víctima.

Saludos.

#275
Hola El_Java, sí, el código sólo funciona en Windows.

Saludos.
#276
El número de argumentos máximos depende de va_start, que se le pasa un valor de tipo int, por lo tanto debería permitir 4294967296 parámetros. Pero, la verdad, no creo que aguante tantos parámetros ni te recomendaría que lo comprobaras  ;D

Si haces:

Código (cpp) [Seleccionar]

int suma = Sumar(3, 2, 3, 7, 14, 29);


Si al primer parámetro le pasas un 3, así que va a ignorar los 2 últimos números, la suma daría 12.

Código (cpp) [Seleccionar]

int suma = Sumar(2, 2, 3);
suma = Sumar(3, 2, 3, 7);
suma = Sumar(4, 2, 3, 7, 22);
suma = Sumar(7, 2, 3, 7, 14, 29, 1, 44);


Suelen ser bastante útiles estas funciones, un ejemplo claro son las funciones: printf, fprintf, sprintf.. El uso que le des a esto, depende de tu imaginación a la hora de programar.

Saludos.
#277
Hola Dark Invader, pues como ya te dije en la función va_arg, en el segundo parámetro le indicas el tipo de dato que quieres obtener. En el ejemplo que te puse, quiero obtener 3 punteros de tipo char. Si quieres obtener int, harías algo así:

Código (cpp) [Seleccionar]

#include <iostream>
#include <stdarg.h>

int Sumar(int cantidadNumeros, ...)
{
va_list list;
int result = 0;

va_start(list, cantidadNumeros);

for (int i = 0; i < cantidadNumeros; i++)
result += va_arg(list, int);

va_end(list);

return result;
}

int main(int argc, char * argv[])
{
int suma = Sumar(5, 2, 3, 7, 14, 29);
std::cout << "La suma da: " << suma << std::endl;

std::cin.get();
return 0;
}


Saludos.
#278
Mira este pequeño ejemplo que acabo de hacer:

Código (cpp) [Seleccionar]

#include <iostream>
#include <Windows.h>

int main(int argc, char * argv[])
{
HWND hCalc = FindWindow(NULL, L"Calculadora"); //Obtenemos el Handle de la ventana de la calculadora
if (hCalc != 0)
{
SetForegroundWindow(hCalc); //Hacemos que la calculadora tenga el foco para enviarle las teclas
keybd_event((BYTE)VkKeyScan('2'), 0, 0, 0); //Pulsamos la tecla 2
keybd_event((BYTE)VkKeyScan('2'), 0, 2, 0); //Levantamos la tecla

keybd_event(VK_ADD, 0, 0, 0); //Pulsamos +
keybd_event(VK_ADD, 0, 2, 0); //Levantamos +

keybd_event((BYTE)VkKeyScan('3'), 0, 0, 0); //Pulsamos la tecla 3
keybd_event((BYTE)VkKeyScan('3'), 0, 2, 0); //Levantamos la tecla 3

keybd_event(VK_RETURN, 0, 0, 0); //Pulsamos enter
keybd_event(VK_RETURN, 0, 2, 0); //Levantamos enter

/*
* Con estas pulsaciones la calculadora debería sumar 2 + 3
*/
}
else
std::cout << "No se encontró la ventana" << std::endl;

std::cin.get();
return 0;
}


Para que funcione, tienes que tener la calculadora abierta. Otro método de buscar la ventana es mediante las APIs para trabajar con procesos, como: Process32First,  CreateToolhelp32Snapshot, etc..

Aquí tienes una tabla con todas las Virtual Key Codes:

http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx

Saludos.
#279
Desarrollo Web / Re: PHP y MySQL
21 Junio 2011, 01:28 AM
Si vas a programar páginas web deberías saber que PHP sin MySQL no te va a servir de mucho. Y para saber MySQL necesitas saber algo sobre base de datos, el sistema relacional, SQL, y más cosas...

Crear tablas y hacer un par de relaciones se puede aprender en un día... pero comprender como funcionan, optimizar las consultas y crear tablas sin duplicidad de datos te va a llevar más tiempo.

Saludos.
#280
A mi se me ocurre que le envíes pulsaciones de teclas a la consola del login. Puedes usar la función keybd_event para hacer eso.

Saludos.