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

#11
Jajajajajajaja!!.....

Podeis imaginaros un facepalm epico como el que nunca se haya visto hasta ahora. Así sigo aún.

Usaba un float para comprobar el resultado y al sacarlo en consola salía un numero entero debido a que usaba "itoa()". Eso convertia el float en entero para sacarlo en texto.

Fallo mio. Espero que no me vuelva a ocurrir.

Muchas gracias por la ayuda. Ya decía yo que era muy raro que a todos les funcionase y a mi no...

Doy el tema por resuelto. Muchas gracias por la ayuda.
#12
Anoche pensé que tal vez el problema venía de usar la libreria equivocada. Pero he probado a usar "fstream" y mas de lo mismo. Es mas, no he conseguido abrir el archivo siguiendo la ruta apropiada. He tenido que sacar el archivo a la misma carpeta que el ejecutable para que este pudiese abrirlo. Y aun así sigo teniendo el limite de los 2GB.

¿Que hago?
#13
Ahora que lo acabo de mirar he visto una lista de compiladores mas larga que la que ví la ultima vez (antes solo había un compilador. El que traía Ubuntu, creo.).

Pero en el compilador GNU GCC no veo esas propiedades. Veo todas las anteriores.

- c++98
- c++11
- c++14
- c++0x
- c99
- ansi
- m32 (que yo recuerde esto era incompatible con el compilador ARM)
- m64

Esta lista la veo en "compiler flags" ya que realmente no genero ningun proyecto. Me gusta usar scripts directamente sin tener que andar con el asistente para proyectos y demas. Eso lo dejo para cuando quiero darle un icono al ejecutable y cosas así. Por lo general, cuando he terminado un programa y quiero dejarlo "pulido", por así decirlo.
#14
"#include <filesystem>" no me funciona. Codeblocks no me la reconoce como una libreria existente.

Tambien he probado a leer caracter por caracter con "fgetc()" para asegurarme que el problema no venía de "fseeko64()" y un posible limite. La conclusion es que cualquier operacion con el sistema de archivos supone un problema para archivos mayores de 2GB.

Ya no sé que mas hacer sin instalar librerias extra.
#15
Uso maquinas de 32 bits, 64 bits y ARM. Para el desarrollo de este programa estoy usando una maquina de 64 bits.

Dudo mucho que un sistema operativo de 32 bits sea quien limite el uso de archivos superiores a 2GB. ¿A caso no puedes ver videos de mas de 2GB en un equipo de 32 bits?

Pues de eso va la cosa. De eliminar esa limitacion que no sé de donde viene y poder trasladar el codigo fuente sin tener que instalar librerias extra en el resto de maquinas. Y finalmente poder usar el programa compilado en maquinas de 32 bits, 64 bits y ARM.
#16
Personalmente prefiero usar un codigo algo enrevesado que andar usando librerias extra. Mas que nada para poder mover el codigo fuente entre maquinas y no tener que andar instalando en todas ellas todas las liberias posibles.

He visto que tengo una funcion llamada "filength()". ¿Esa me servirá para este caso concreto?

De todos modos, sigo teniendo el problema de leer y escribir mas allá de los 2GB. En el ejemplo que he puesto solo necesito el tamaño del archivo, pero mas adelante voy a necesitar la opcion de trabajar con archivos de un tamaño superior a los 2GB. Ese es el verdadero problema.
#17
Nada. Con Double o Float me lanza un error de compilacion diciendo algo del "unsigned". Me parece que dice que no se pueden combinar.

De todos modos, me parece que eso no debería ser problema. Me parece que el problema viene de las funciones FILE. Ya probe tambien a usar "tempReturn++;" para comprobar si el limite venía del "unsigned int", pero no pasaba nada fuera de lo normal. Solo devolvía un byte por encima de los 2GB.

¿Alguna otra idea?
#18
He terminado un programa y me he topado con un par de bugs.

Uno de ellos tiene que ver con obtener el tamaño de un archivo. Utilizo el siguiente codigo para obtener el tamaño del archivo:

Código (cpp) [Seleccionar]


#define __USE_FILE_OFFSET64
#define __USE_LARGEFILE64
#define __USE_LARGEFILE

// Mucho codigo despues...

unsigned int getFileSize(string fileName) {
    unsigned int tempReturn = 0;

    FILE *temp = fopen64(fileName.c_str(), "rb");

    if (temp != NULL) {
        feeko64(temp, 0, SEEK_END);
        tempReturn = ftello64(temp);
        fclose(temp);
    }

    return tempReturn;
}



El caso es que pese a usar "fopen64()" e incluir los "#define" para usar archivos largos, no supera los 2GB. Estoy haciendo pruebas con un archivo de 2,7GB y me dice que el tamaño es de 2GB.

¿Alguna idea de como puedo solucionarlo?

Lo incluyo todo correctamente y el compilador no me da ningun error. ¿Tendría que añadir algun parametro mas a la orden de compilado?

Uso ubuntu y codeblocks. Supongo que esto es portable a Windows y para mi proximo proyecto necesito dejarlo zanjado porque lo desarrollaré para ambos sistemas operativos.
#19
He conseguido descargar el sistema operativo que ofrece el fabricante para restaurar el sistema de fabrica. Al parecer se trata de la version del 15/04/2011. ¡Anda que no ha llovido nada!

El caso es que esta compuesto por una imagen del sistema operativo guardada como archivo ".img" y junto a otros archivos dispone de "Win32DiskImager.exe" con el que se puede grabar el sistema en la SD para que la maquina arranque desde ahí.

Al parecer no vale una ISO como la de cualquier usb booteable. ¿Hay formas de convertir una ".iso" a ".img"? ¿Donde puedo obtener un sistema operativo Linux para ARM?
#20
He probado lo que decias. He pulsado una y otra vez la tecla F11 durante el arranque y nada. Tan solo aparecían los caracteres asociados a la tecla pulsada.

Tambien he encontrado un programa que se llama "Origenes del software". Lo he tocado para permitirme instalar cosas de Canonical, pero como tiene los origenes en "package.ecafe.hercules.com" no puede encontrar nada para instalar. Supongo que tendría que añadir las claves de seguridad de Linux para obtener actualizaciones en el panel de "Proveedores de software en los que confia".

¿Alguna idea de que puedo hacer? El programa "Gestor de actualizaciones" ya me avisa que "Su version actual de Ubuntu ya no esta soportada". ¿Puede ser por esto que no obtenga nada util con "apt-get update"?

Trataré de descargar el archivo para reinstalar el sistema operativo del fabricante y a ver si así puedo tener una version mas actualizada. Cuando tenga novedades, comento. Mientras agradezco y mucho cualquier consejo.