Autor Tema: Duda con directorios  (Leído 1510 veces)

Yawin

  • Hero Member
  • *****
  • Mensajes: 1091
  • Karma: 45
  • La primera persona que ha "demosceneado" en Bennu.
Duda con directorios
« en: Marzo 09, 2011, 03:18:48 pm »
Bueno, estoy intentando hacer el siguiente programa:
1º Miramos si existe la carpeta "maps".
2º Si no existe: La creamos.
3º Miramos si existe la carpeta con el nombre que me han pasado.
4º Si no existe: la creamos.
5º Miramos si existe el fichero que se llama "el nombre que me han pasado".yaw

Y la cosa es que todo está en inglés y no soy capaz de entender qué función puedo emplear para ver si existe algo o no.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12929
  • Karma: 378
Re: Duda con directorios
« Respuesta #1 en: Marzo 09, 2011, 04:20:08 pm »
no te entendi nada...

por otro lado, la funcion file_exists es para archivos y si tienen permiso de escritura.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Yawin

  • Hero Member
  • *****
  • Mensajes: 1091
  • Karma: 45
  • La primera persona que ha "demosceneado" en Bennu.
Re: Duda con directorios
« Respuesta #2 en: Marzo 09, 2011, 05:05:19 pm »
A ver, estoy haciendo una función que cree archivos.
Mire si existe el lugar indicado y si no existe, lo cree.

Para eso no se qué función emplear. No se con qué función mirar si existe la carpeta.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Fede

  • Hero Member
  • *****
  • Mensajes: 1532
  • Karma: 71
  • Buen ambiente, buen karma.
Re: Duda con directorios
« Respuesta #3 en: Marzo 09, 2011, 08:16:26 pm »
Con el Bennu File Manager, todo eso que preguntas ya me lo he trillado yo. :D

En la wiki tienes 22 funciones de manejo de ficheros.

Teóricamente con ‘fexists’ debería de valer, peroooo, hay un problema. Splinter la implementó de manera que fuera más fácil cargar un fichero y te da que el fichero existe, si existe en cualquier parte de los path de búsqueda.

Yo me tuve que hacer mi propio ‘fexists’ a base de leer todo el directorio con ‘glob’.

Total, que lo que quieres hacer a mí no me resultó trivial.

En cuanto mis ‘angelitos’ me dejen te posteo un código.

(Joder, menuda tarde de críos llevo).
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12929
  • Karma: 378
Re: Duda con directorios
« Respuesta #4 en: Marzo 09, 2011, 10:26:50 pm »
hace un tiempo me ronda en la cabeza darle una revision a eso, no para modificar lo que ya existe, sino para ampliar la funcionalidad, tanto los open, exists, y alguna otra que tenga que ver con busqueda automatica de paths (creo que no hay otra, pero por las dudas)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Fede

  • Hero Member
  • *****
  • Mensajes: 1532
  • Karma: 71
  • Buen ambiente, buen karma.
Re: Duda con directorios
« Respuesta #5 en: Marzo 10, 2011, 07:06:41 am »
El sistema de funciones que existe lo encuentro bien Splinter.

Está pensado para facilitar las cosas al programador de videojuegos.

La única pega es que dificulta la creación de programas más 'serios' que trabajen con ficheros, pero todo se puede solucionar. Para muestra el Bennu File Manager. :D

Ahora bien, si piensas mejorarlo, pues ¡OLE!

Yawin:

Aquí tienes la función que utilizo para sustituir a fexists:

Código: [Seleccionar]
function byte MiFexists(string sDirectorio,string sFichero)
// Devuelve '1' si el fichero existe. '0' en caso contrario.
// Si el fichero existe, se actualiza fileinfo.
// No distingue entre mayúsculas y minúsculas.
private
string sDirectorioEnCurso="";
string sArchivo;
end
begin
sDirectorioEnCurso=cd();
chdir(sDirectorio);
sArchivo=glob("");
sArchivo=glob("*.*");
while (sArchivo!="")
if (ucase(sArchivo)==ucase(sFichero) and fileinfo.directory==0)
chdir(sDirectorioEnCurso);
return 1;
end
sArchivo=glob("*.*");
end
chdir(sDirectorioEnCurso);
return 0;
end

Ni que decir tiene que el BFM lleva el código fuente.

Si lo vas a mirar, el proceso ‘Botones’ será posiblemente la parte que te interese.


Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Yawin

  • Hero Member
  • *****
  • Mensajes: 1091
  • Karma: 45
  • La primera persona que ha "demosceneado" en Bennu.
Re: Duda con directorios
« Respuesta #6 en: Marzo 10, 2011, 07:26:42 am »
Muchas gracias. Me has salvado el culo.

Nah, los botones no me interesan, ya tengo hechos algunos. Me interesa más el textbox. No se me ocurre cómo hacerlo xD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Fede

  • Hero Member
  • *****
  • Mensajes: 1532
  • Karma: 71
  • Buen ambiente, buen karma.
Re: Duda con directorios
« Respuesta #7 en: Marzo 10, 2011, 07:49:45 am »
Perdón, no me he explicado bien.

En el proceso 'botones', está la mayoría de la gestión de archivos.

Allí hago llamadas a procesos más complicados o realizo las funciones de creación directamente.

Ejemplo del botón 'mkdir':

Código: [Seleccionar]
// Pulsado botón 'crear directorio'.
if (iIdeBotonMkdir.bPulsado)
frame;
sDirectorio=PideTexto("");
frame;
if (sDirectorio!="")
if(MkDir(sDirectorio))
sVentanaMensaje[0]="Error: Directory not created!";
VentanaMensaje(0,0,0,0,0,&sVentanaMensaje,1,"Error");
else
bRefrescar=1;
end
end
while (iIdeBotonMkDir.bPulsado)
frame;
end
end

Como ves, este trozo de código no es más que pedir el directorio y comprobar que no da error al crearlo.

Estaba intentando ahorrarte el trabajo de bucear en el código viendo como creo y borro ficheros.  :)

Saludos.
« última modificación: Marzo 10, 2011, 07:52:22 am por Fede »
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Yawin

  • Hero Member
  • *****
  • Mensajes: 1091
  • Karma: 45
  • La primera persona que ha "demosceneado" en Bennu.
Re: Duda con directorios
« Respuesta #8 en: Marzo 10, 2011, 08:02:29 am »
ammm, pues muchas gracias xD Aunque la verdad, primero, me he metido en el diseño de los formularios para luego programar la base. Asi que hasta dentro de unos días(o unas horas, no lo se) no le daré uso.

Por otro lado, aunque agradezco que quieras evitar que bucee en código para ello. Esa es la parte más bonita de la programación. Al menos desde mi punto de vista. ^__^

En cualquier caso, te has ganado un Karma++ (y tú, Drumpi, ya pareces un abonado a mis karmas, cada dos por tres me das una ayuda genial xD)
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Fede

  • Hero Member
  • *****
  • Mensajes: 1532
  • Karma: 71
  • Buen ambiente, buen karma.
Re: Duda con directorios
« Respuesta #9 en: Marzo 10, 2011, 09:29:46 am »
Pues a mí, bucear en el código de otro, me da dolor de cabeza.  Seguro que es porque ya estoy mayor. :D

Gracias por el karma.
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Yawin

  • Hero Member
  • *****
  • Mensajes: 1091
  • Karma: 45
  • La primera persona que ha "demosceneado" en Bennu.
Re: Duda con directorios
« Respuesta #10 en: Marzo 10, 2011, 09:33:30 am »
nah, lo que pasa es que yo sestoy loco xD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end