Anuncios Google

Ayuda Palib[EDITADO]

¿Como puedo hacer con palib que lea los archivos de dentro de la SD y reconozca sus extensiones?

¿y luego como puedo acceder a dichos archivos?

 


 

Agradezco su ayuda, pero yo lo que quiero es almacenar el nombre de un archivo mas su extension para despues poder usarlo donde pone AQUI.txt

                      salvado = fopen("AQUI.txt","wb");
    fwrite(&monedas,1,sizeof(monedas), salvado);
    fclose(salvado);

y asi poder modificar cualquier archivo k se encuentre en la sd con extension txt, por ejemplo, coger un archivo de texto de la SD, el primero k vea que la ds coja su nombre y extendion y este se ponga donde ahora pone AQUI.txt para poder modificarlo


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Disgepia

Mira puedes

checar la ruta C:\devkitPro\palib\examples\FAT\FATListDirectory para que veas como se listan directorios, luego puedes abrir txt's o png's mediante FAT, a mi la ruta C:\devkitPro\palib\examples\FAT\FATLoading\FatLoading_with_EFSlib me sirvio mucho :D


Imagen de Cheleon

Pues si a ti te sirvio me

Ok, he conseguido leer todos los archivos de cualquier carpeta de la SD, paero como hago para que por ejemplo reconozca los que son txt y pueda abrirlos.

Espero que esto te funcione e

Espero que esto te funcione e interese:

averiguar_extension(char string[]){
s8 numletras,letras_ext,a; // Para el número de letras, y el número de letras de la extensión, y para el bucle for
char extension[5]; // Aquí almacenaremos la extensión
numletras=strlen(string); // Lee el número de carácteres
if (strlen[numletras-3]==".") // A partir de aquí comprobaremos el número de letras de la extensión
{letras_ext=3;}
else if (strlen[numletras-4]==".") {letras_ext=4;}
else if (strlen[numletras-5]==".") {letras_ext=5;}
extensión[letras_ext+1]="\0" //Añadimos automáticamente el carácter final
for (a=0; a<numletras; a++){
extension[letras_ext-a]=string[numletras-a]; // Pasamos la extensión a la variable
}
// Y listo
// A partir de aquí es para pasar la variable en forma de número
switch(extension){
case txt: return 0;
case jpeg: return 1;
case png: return 2;
default: return -1;
}

Y ya está, devolverá -1 si ha habido un error o si no tiene en la lista el tipo de archivo.

No está de más decir que debes o añadir la librería string o crear tu propio strlen, mejor la primera más sencillo, no?

Esto no va a funcionar ni de

Esto no va a funcionar ni de coña, ¿eh?

switch(extension){
case txt: return 0;
case jpeg: return 1;
case png: return 2;
default: return -1;

Primero, cosas como txt no son cadenas de texto, tendrías que poner "txt". Y aun así no funcionaría. Tendrías que poner una serie de if..else if... usando strcmp para ver si la extensión coincide. Además, falta poner int antes del nombre de la función. De todos modos, te has complicado mucho la vida para sacar la extensión, pero bueno...

Uy... ¬¬ vaya chasco... la

Uy... ¬¬ vaya chasco... la verdad lo hice como se me iba ocurriendo y estará fatal de todas formas ahora mismo lo pruebo yo mismo y ya os diré.

EDIT: de todas formas si te se ocurre algo que sea mejor para la máquina postealo, muchos te lo agradecerán.

#include <string.h>   #ifdef

#include <string.h>
 
#ifdef __GNUC__
#define _stricmp strcasecmp
#endif
 
int FileType(const char * file)
{
  if(strlen(file) > 4) {
    char * p = strrchr(file,'.');
 
    if(p != NULL) {
      if(_stricmp(p, ".txt") == 0)
        return 0;
      if(_stricmp(p, ".mp3") == 0)
        return 1;
      if(_stricmp(p, ".bin") == 0)
        return 2;
    }
  }
 
  return -1;
}

 

Esto está copiado del VisualBoy Advance y adaptado.

...

Ni se me hubiera courrido, la verdad he estado intentando hacer uno por mi mismo pero bueno ¬¬. Creo que mucha gente te lo agradecerá (incluido yo mismo).

por cierto a que viene lo del ifndef? no lo entiendo

Que según el compilador puede

Que según el compilador puede tener un nombre u otro... No es una función de las "estándar", la normal distingue entre mayúsculas y minúsculas, esta no, y eso viene bien para el tema de extensiones en windows.

Imagen de Cheleon

Lo he compilado y da un

Lo he compilado y da un monton de errores...

Imagen de Cheleon

Perdona mi ignorancia, ¿pero

Perdona mi ignorancia, ¿pero como añado las librerias string?

Imagen de kNightFox

#include <string.h>

#include <string.h>

 

Imagen de magicblack2009

¿No podría alguien?

Sé que es mucho pedir, pero... ¿no podría alguien pasarme ese ejemplo por mp si es tan amable? Es que la versión de PAlib que tengo está muy anticuada y no sale ese ejemplo :P Espero que alguien me lo pueda pasar :P

Salu2


¿Quieres estar totalmente informado sobre el universo 3DS? Visita Magic3DS.

También puedes estar al tanto de toda la actualidad de 3DS en Twitter: @Magic3DS

Imagen de OdnetninI

no lo se muy bien pero crea

no lo se muy bien pero crea que era con efs y con fat

Imagen de Cheleon

Ya se que se hace iniciando

Ya se que se hace iniciando FAT, eso ya lo tengo hecho.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.