domingo, 6 de junio de 2010

Cambiar el color del texto de la consola

0

No es muy común en Windows pero quizás alguna vez quieras cambiar el color del texto/fondo de la consola, por ejemplo, que los mensajes de error salgan de color rojo.

Creo que con el ejemplo es mas que suficiente para saber y entender como hacerlo.

De todas formas, por si alguien anda un poco despistado pongo todos los posibles valores del segundo parámetro de la función que se encarga de cambiar el color. Y acuérdate que para poner varios hay que usar el operador binario OR | .

FOREGROUND_INTENSITY
FOREGROUND_RED
FOREGROUND_GREEN
FOREGROUND_BLUE 
BACKGROUND_INTENSITY
BACKGROUND_RED
BACKGROUND_GREEN
BACKGROUND_BLUE

#include <windows.h>

HANDLE hstdout;

void write(const char* message)
{
    DWORD t;
    WriteConsole(hstdout, (const void*)message, lstrlen(message), &t,NULL);
}

int main()
{
    hstdout = GetStdHandle(STD_OUTPUT_HANDLE);

    write("\n\n");
    SetConsoleTextAttribute(hstdout, FOREGROUND_INTENSITY | FOREGROUND_RED | BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE );
    for (int i = 0; i< 40; i++) write(" ");
    write("\n          davidxl.blogspot.com          \n");
    for (int i = 0; i< 40; i++) write(" ");
    SetConsoleTextAttribute(hstdout,FOREGROUND_INTENSITY);
    write("\n\n");


    for (int i = 0; i<256; i++)
    {
        SetConsoleTextAttribute(hstdout,i);
        write("?");
    }

    SetConsoleTextAttribute(hstdout,FOREGROUND_INTENSITY);
    return 0;
}
Comparte o puntua esta publicación ▼

Elimina de un archivo todas las apariciones de un fragmento de texto

0

Lo mejor de saber programar es que cuando necesitas un programa muy concreto te lo puedes hacer tu, y este seguramente lo hayamos necesitado alguna vez.

Al programa le pasas 2 parámetros, el primero el nombre del archivo de texto (txt, html... cualquiera que se pueda abrir con el notepad), y el segundo es el texto o palabra que quieres quitar (si lleva espacios ponlo entre comillas).

#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char* argv[])
{
    if (argc < 3)
    {
        cout << "QuitaPalabras.exe filename text" << endl;
        return 1;
    }
    int wsize = strlen(argv[2]);

    ifstream in(argv[1],ios::binary);

    in.seekg(0,ios::end);
    long size = in.tellg();
    in.seekg(0,ios::beg);
    size -= long(in.tellg());

    char * buffer = new char [size];

    in.read(buffer,size);
    in.close();

    int i=0,j=0;
    while (i<size)
    {
        int k = 0;
        while (k<wsize && buffer[i+k] == argv[2][k]) k++;
        if (k<wsize)
            buffer[j++] = buffer[i++];
        else
            i+=wsize;
    }

    ofstream out(argv[1],ios::binary);
    out.write(buffer,j);
    out.close();

    return 0;
}

Comparte o puntua esta publicación ▼

Beep()

0

Un ejemplo de como hacer que suene el altavoz interno del PC con la funcion Beep(frecuecia,duracion).

#include <windows.h>

int main()
{
    for (int i = 37; i< 32000; i+=100)
    {
        Beep( i, 100 );
        Sleep(101);
    }

    system("PAUSE");
    return 0;
}
Comparte o puntua esta publicación ▼

viernes, 4 de junio de 2010

DvD - Musica XM

0

Parte de los proyectos que empiezo terminan siendo abandonados a medias, por falta de tiempo o por que comienzo otros nuevos proyectos, pero en este caso, después de varios años, retomo el trabajo que empece con 15 o 16 años y por fin lo termino.

Se trata de un "chipdisk" o programa con musica que ocupa muy poco, la gran mayoría son de tipo xm, y suenan como las de los "keygen". "DvD - Musica XM" es el nombre que le di en 2006 (DvD era mi alias por entonces) y contiene mas o menos las 50 canciones que mas me gustan de las que tengo de este tipo, que en algunos casos son muy difíciles de conseguir.

Mirar que bien que me quedo la pequeña ilusión óptica de la de la figura 3D imposible que forman los botones, el texto y las estrellas.

50 cancones con una duracion total de casi 2 horas en tan solo un zip de 1.2 mb.

Tracklist

1 Moh - Vinterdack och data 0:46
2 Quazar - Funky Stars 2:20
3 Radix - Weather Girl 1:23
4 Saxxonpike - Happytro 0:46
5 Screamager - at0mic playboys 1:56
6 Sinny - Sky Sunday 1:47
7 Smirk - Afrox 1:31
8 So Close 2:01
9 Svenzzon of Titan - The Titan Turrican 1:15
10 Zabutom - Zeta Force Level 2 1:01
11 Zalza - A really bad cptune 1:00
12 Zalza - Techno Chip 1:01
13 Ajaxlemon - Chip never die 3:19
14 Algar - den vackra sovvisan 1:21
15 Algar - wtf 1:28
16 Apfel Kaputt2 1:13
17 Bzl - Sanxion 3:19
18 Cartoon - HighWay 0:39
19 Dualtrax - Crome vs Pikachu 1:26
20 Dualtrax - Crosnake Ingametune 1:01
21 Dualtrax - shining like a star! 1:32
22 Dualtrax - Shitune2 0:42
23 Dualtrax - The Travel to Orion 0:52
24 Dualtrax - What the hell ... 1:03
25 Dualtrax & Cro - marihuana 1:06
26 Dualtrax & Moh - Xmastune 2004 1:27
27 Dubmood - Afterburner 3:32
28 Dubmood - ECLiPSE Keygen 1:18
29 Dubmood - Ida's hashkaka 1:47
30 Dubmood - Introchip#14 BETAFUX 3:27
31 Dubmood - Landsraad_raiders 1:03
32 Dubmood - Ninja starts school 1:14
33 Dubmood - Sleeples (4everblue morninsky) 5:33
34 Dubmood - Toffelskater-hero 3:15
35 Dubmood & Nadom - Chicago chiphop 2:11
36 Dubmood & Zabutom - You can do it but 2:12
37 ExcelioN - IBM 486 66Mhz 1:09
38 Fighting For Fun keygen 0:53
39 Floppi - DreamChip megamix II 30:02
40 Ghidorah - AfterShock! 1:55
41 Ghidorah - Shittune 1:59
42 Ghidorah - WaterSky 1:31
43 Halftime 0:43
44 Jallabert - Skonad av skonaren 1:03
45 Jallabert - Vahva Kuin Karhu 1:55
46 Jallabert, Algar & Pikzel - Cancer Abscess 1:35
47 Lesnik - Ninety Degrees 1:21
48 LHS - Myth Installer #1 1:11
49 Maktone - Pointer 0:57
50 Midnight Flip 97 - Africa 4:05

Se recomienda tener la fuente calibri, también abrir la aplicación sobre un fondo claro. Espero que les guste.

Comparte o puntua esta publicación ▼

miércoles, 2 de junio de 2010

Algunas funciones útiles: C y C++

1

Algunas de las funciones son muy facilitas, otras no tanto y algunas seguramente nunca las utilices, pero están bien para aprender o usar en algunos proyectos.


int MCD( const int a, const int b )
{
    int m = (a<b?a:b);  // min(a,b)
    while ( ( a % m != 0) || (b % m != 0 ) ) m--;
    return m;
}

int MCM( const int a, const int b )
{
    int m = (a>b?a:b);  // max(a,b)
    while ( ( m % a != 0) || (m % b != 0 ) ) m++;
    return m;
}

int min( const int a, const int b )
{
    return ( a < b ? a : b);
}

int max( const int a, const int b )
{
    return ( a > b ? a : b);
}

int abs( const int a)
{
    return ( a < 0 ? -a : a);
}

typedef unsigned long long BIG;

BIG pow( const int a, int b)
{
    unsigned int n = 1;
    while(b--) n *= a;
    return n;
}

BIG factorial(unsigned int n)
{
    if (n <= 1) return 1;
    for(int i=n-1; i>1 ;i--)
        n = n * i;
    return n;
}

BIG fibonacci(unsigned int n)
{
    BIG r, t0=0, t1=1;
    if(n == 0) return 0;
    if(n == 1) return 1;
    for(int i=1; i<n; i++)
    {
        r = t0+t1;
        t0 = t1;
        t1 = r;
    }
    return r;
}

const double PI = 3.14159265358979323846;

double rad2deg(double rad)
{
      return (180.0 * rad / PI);
}

double deg2rad(double deg)
{
      return (PI * deg / 180.0);
}

unsigned long rgb2hex(const int r,const int g,const int b)
{
    return (unsigned long)(r | g<<8 | b<<16);
}

typedef unsigned char  BYTE;
typedef unsigned short WORD;
typedef unsigned long  DWORD;

#define RGB(r,g,b)((DWORD)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))

#define R(c) ( (BYTE) ( (DWORD)(c) & (DWORD)(0xff) ) )
#define G(c) ( (BYTE) ( ((DWORD)(c) & (DWORD)(0xff00)) >> 8) )
#define B(c) ( (BYTE) ( ((DWORD)(c) & (DWORD)(0xff0000)) >> 16) )

Comparte o puntua esta publicación ▼