Problemas con diropen

Started by FreeYourMind, June 13, 2011, 11:28:51 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Hola, no se lo que estoy haciendo mal, pero diropen me devuelve un valor cuando intento abrir un directorio que no existe:

existe_ruta = diropen("/no_existo/");

  if(existe_ruta) say("existe"); say(existe_ruta); dirclose("/no_existo/");
  else
     say("não existe");
  end

la carpeta no_existo no existe xD

El say me devuelve esto:

existe
124494136










Yawin

Yo probaría con esto:
if(!diropen("/no_existo/")) say("existe"); say(existe_ruta); dirclose("/no_existo/");
  else
     say("não existe");
  end
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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

FreeYourMind

igual, no existe, si creo la carpeta dice no existe de igual forma

Rein (K´)ah Al-Ghul

Primero deberia verificar si el directorio que intentas abrir existe...

http://wiki.bennugd.org/index.php?title=Glob

Rein (K´)ah Al-Ghul
Infected with the Krieger strain of the Human-MetaHuman Vampiric Virus.

en vez de darme Karma positivo, denme (K´)arma negativ

FreeYourMind

si lo estoy usando para hacer esa comprobación, me dijó splinter para usar diropen para saber si un directorio existe. pero me parece que el glob ese es lo que realmente debo usar...

SplinterGU

es cierto, no estoy retornando error al abrir, pero el error te lo deberia dar en el primer dir_read...

igual para la proxima version, la funcion dara error si la funcion falla internamente y no sera necesario esperar al dir_read
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

laghengar

Free, has logrado hacer que compruebe bien si la carpeta existe o no?

Yo estoy con ello y no doy con cómo hacerlo. Por ahora voy a crear la carpeta y seguir adelante ya que no consigo hacerlo bien.

if(glob("familias"))
    say("se ha encontrado la carpeta familias");

    dir_familias=diropen("familias");
    say("Se ha abierto la carpeta familias");

    else

    say("No se ha encontrado la carpeta familias");

    mkdir("familias");
    say("Se ha creado la carpeta familias");

    dir_familias=diropen("familias");       
    say("Se ha abierto la carpeta familias");

end


Siempre me hace el "else" estando creada la carpeta o no, he probado diferentes combinaciones en glob, y no ha habido manera de que por una vez vea que la carpeta existe.
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

FreeYourMind

prueba de esta forma:

WHILE(glob("/*") != "")

     IF(fileinfo.directory == TRUE && fileinfo.name == "familias")
     say("se ha encontrado la carpeta familias");
     END
END

DCelso

Haz un diropen y luego un dirread. Este te dara error so no existe. Ya te lo dijo splintergu.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

Quote from: DCelso on February 23, 2013, 10:40:42 AM
Haz un diropen y luego un dirread. Este te dara error so no existe. Ya te lo dijo splintergu.

yo lo dije? (me suena que si, pero no recuerdo, y no he respondido en este hilo porque me suena a deja-vu)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

dejale splinter, ha confundido las dudas iniciales con la ultima que ha reabierto el hilo  ;D

SplinterGU

la cosa es que glob no retorna un valor numerico sino una string... y es vacia cuando no encuentra el pattern o falla...

se debe comparar contra ""

edit: lo dice claramente la wiki http://wiki.bennugd.org/index.php?title=Glob
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

laghengar

#12
Vale gente, lo he conseguido  ;D . Después de tener en cuenta todas las opiniones y descifrándome la wiki lo he conseguido con este código. Mi fallo estaba en que no entendía como funcionaba glob()


dir_familias=0

while (glob("*")!= "")
    say(fileinfo.name);

    if(fileinfo.directory == true and fileinfo.name == "familias")
        say("se ha encontrado la carpeta familias");

        dir_familias=diropen(fileinfo.name);
        say("Se ha abierto la carpeta familias");

    end
end

if(dir_familias==0);
    say("No se ha encontrado la carpeta familias");

    mkdir("familias");
    say("Se ha creado la carpeta familias");

    dir_familias=diropen("familias");
    say("Se ha abierto la carpeta familias");

end


Hace lo que quiero, si no está la carpeta familias la crea, y si existe la abre, leyendo todos los nombres de archivos correctamente. Free diste con ello ;)

con glob("/*"); me hace algo que no entiendo. Me mira archivos incluso de otras carpetas (documents and setting, windows, etc, etc pero no todas la carpetas si no que parece más bien que las mira de forma aleatoria).

Muchas gracias por todo :) , ahora puedo seguir adelante poniéndole más cosas.
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

SplinterGU

no mira de forma aletaorea... con "/*" son todos los archivos del raiz.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

laghengar

Quote from: SplinterGU on February 24, 2013, 05:38:32 PM
no mira de forma aletaorea... con "/*" son todos los archivos del raiz.

Ah  ;D . Pero por lo que me ha parecido ver también mira el directorio de ejecución. Cómo no me puse a revisar todos los archivos que me miró, pensé que lo hacía de forma aleatoria, perdón  ;D .
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O