Retomando la programación
Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06
- largeroliker
- 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
Eso simplemente lo saqué de la red http://c.conclase.net/curso/?cap=039
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
Re: Retomando la programación
Realmente copiar-pegar código sacado de la red sin saber qué hace no es recomendable que digamos, vice.
Re: Retomando la programación
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
Última edición por Yn$an€ el 18 Mar 2011, 12:59, editado 1 vez en total.
... after all, we're all alike.
- largeroliker
- 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
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 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
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
- largeroliker
- 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
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:
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...
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...
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
Re: Retomando la programación
Ei, como has hecho doble post?
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?
Quería decir que hay varias formas de comparar contenidos de memoria directamente, pero bueno.
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?
Quería decir que hay varias formas de comparar contenidos de memoria directamente, pero bueno.
... after all, we're all alike.
- largeroliker
- 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
La majia de los admins
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
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
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
Re: Retomando la programación
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 --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!
Que aproveche!
... after all, we're all alike.
- largeroliker
- 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
Pues voy corriendo a una clase acelerada de punteros, que no los he dado nunca
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2
Re: Retomando la programación
Ale, pal tuto de m0skit0. (Que si no yo te mato ) 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);
SLDS
PD: Pero que m0skit0 no se entere!!
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.