Retomando la programación

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8283
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

Re: Retomando la programación

Mensaje por largeroliker »

Eso simplemente lo saqué de la red http://c.conclase.net/curso/?cap=039
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Retomando la programación

Mensaje por m0skit0 »

Realmente copiar-pegar código sacado de la red sin saber qué hace no es recomendable que digamos, vice.
Imagen

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: Retomando la programación

Mensaje por Yn$an€ »

Largeroliker escribió: Eso simplemente lo saqué de la red http://c.conclase.net/curso/?cap=039


Si te fijas, verás que le cambia el tipo a un struct para que sea considerado char y copiar a el. No es necesario en tu caso.

m0skit0 escribió: Realmente copiar-pegar código sacado de la red sin saber qué hace no es recomendable que digamos, vice.


Tienes razón. De hecho, es la 2 + 1 vez que recomendamos que se aprenda la teoría antes de lanzarse a programar en este hilo.

PD: Gracias por arreglar los quotes :lol: :lol:
Última edición por Yn$an€ el 18 Mar 2011, 12:59, editado 1 vez en total.
... after all, we're all alike.

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8283
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

Re: Retomando la programación

Mensaje por largeroliker »

m0skit0 escribió:Realmente copiar-pegar código sacado de la red sin saber qué hace no es recomendable que digamos, vice.

Es el ansia de avanzar :lol: Pero amos, que hago lo que me habéis dicho, buscar en la red la función de turno...lo que pasa es que puede no estar del todo bien explicado a veces :roll:
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8283
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

Re: Retomando la programación

Mensaje por largeroliker »

Ah, he avanzado, pero necesito que me ayudéis en una cosa concreta.

He logrado ya separar en dos archivos la cabecera del DOCUMENT de las fotos, utilizando este código:

Código: Seleccionar todo

if (cadena[1] == 'P')
   {
      f2.close();
      f2.open ("output2", ofstream::out | ofstream::binary);
   }


El problema es que empieza bien, pero hay un punto en el que en mitad de una foto da eso como válido y reescribe el archivo. Quiero poner como segunda opción si cadena[0] (estoy usando un array de dos caracteres) es el valor...89 en hexadecimal, lo que es 137 en ASCII, ë. Pero no hay manera de que me reconozca ese valor...necesito algún header más para el ASCII extendido?

EDIT: Ya he solucionado ese problema, pero me he encontrado con otro relacionado con el tamaño del array al que tengo que dedicarle un tiempo...
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: Retomando la programación

Mensaje por Yn$an€ »

Ei, como has hecho doble post? :lol:

Y especifica lo más que puedas los problemas, si no....

-- Doble Post --

Una cosilla, el header es el mismo para todas, no? Pués guárdalo en una cadena para comparar.

-- Doble Post --

No va el dobe post, no? :lol:

Quería decir que hay varias formas de comparar contenidos de memoria directamente, pero bueno.
... after all, we're all alike.

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8283
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

Re: Retomando la programación

Mensaje por largeroliker »

La majia de los admins :lol:

Detallo el problema. Ahora mismo lo que hago es que ir leyendo de cuatro en cuatro los caracteres del archivo, y una vez dada la secuencia (valor 137)PNG comenzar a escribir en un nuevo archivo. Lo malo es que los PNG NO son pares, y tengo que ingeniármelas porque una cadena puede ser perfectamente [00 00 (valor 137) P]...para añadir más dificultad, hay varios archivos de valor 137 que no son inicio de imagen, incluso un apartado era valor 137 P N...

Ahora mismo la idea que tengo es no usar array, o si, pero leer de uno en uno y cuando encuentre el dichoso 137 que busque la P y si los encuentra todos escribirlos en un nuevo archivo y de ahí seguir. Pero lo dejo para el lunes, que ahora me toca mantenimiento del blog y comer un poco :lol:
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: Retomando la programación

Mensaje por Yn$an€ »

Ok. La manera que tu dices es incorrecta. Guarda la secuencia correcta en una cadena. Luego tienes que recorrer el fichero hasta encontrar el valor 137.A continuación creas un puntero (auxiliar) a ese valor haciendo puntero = (buffer+pos) (esto depende de si el buffer es un puntero o no, en mi caso si, pero en tu código no lo es :katana: --para ti sería punterro=&buffer[pos]) . Lo siguiente es hacer es strncmp(puntero,cadenacrrecta, 4). Si retorna true, tira palante y copia la imagen. El resto, bueno, ya tu sabes.

Que aproveche!
... after all, we're all alike.

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8283
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

Re: Retomando la programación

Mensaje por largeroliker »

Pues voy corriendo a una clase acelerada de punteros, que no los he dado nunca :lol:
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: Retomando la programación

Mensaje por Yn$an€ »

Ale, pal tuto de m0skit0. (Que si no yo te mato :katana:) Bueno, edito, que tampoco tienes que romperte la cabeza con eso si no quieres.

Haz así:

Busca hasta el 137 con un bucle while
long pos=0;
while (buff[pos] != 137)
pos++;
. Guarda la posición en que aparezca.

Luego: strncmp(&buffer[pos],cadcorrecta,4);

Código: Seleccionar todo

long pos=0;
while (buff[pos] != 137)
    pos++;
strncmp(&buffer[pos],cadcorrecta,4);


SLDS

PD: Pero que m0skit0 no se entere!!
... after all, we're all alike.

Responder