Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Fede on January 01, 2011, 09:42:03 AM

Title: Problemas con fexists.
Post by: Fede on January 01, 2011, 09:42:03 AM
Hola compis de nuevo.

fexists me hace cosas raras.

Cuando uso la forma: "D:\borrame\prueba.prg"

Me da true, tanto si el fichero existe en el directorio por defecto, como si existe en el directorio destino por el cual le pregunto.

¿Alguién me puede hacer la pruebita?

Saludos.


Pego código por si acaso.


import "mod_video";
import "mod_screen";
import "mod_map";
import "mod_key";
import "mod_dir";
import "mod_text";
import "mod_mem";
import "mod_proc";
import "mod_draw";
import "mod_timers";
import "mod_sort";
import "mod_string";
import "mod_file";
import "mod_say";
import "mod_joy";
import "mod_draw";
import "mod_rand";
import "mod_regex";
process Main()

private
int iBarraDeslizanteValor=0;
int iContador;
end

begin
say(fexists("d:\borrame\barras.prg"));
end


Title: Re: Problemas con fexists.
Post by: SplinterGU on January 01, 2011, 04:59:51 PM
proba usando la barra de division.
Title: Re: Problemas con fexists.
Post by: Drumpi on January 01, 2011, 05:02:39 PM
Es cierto, fexists me ha devuelto true si existe barras.prg en el mismo dir que este prg, aunque no exista "d:\borrame\barras.prg", y aunque cambie "\" por "/".
(r181 en wxp64).
Title: Re: Problemas con fexists.
Post by: Fede on January 01, 2011, 08:48:30 PM
r189 en wxp64.

Quedaría ver en linux.

(Que suerte tengo. No tengo bastante con la que lio programando, sino que encima, para cuatro bugs que hay, soy capaz de haberme topado con uno.)  :'(

E D I T O !!!!!!!!!!!!!!!!


GRACIAS DRUMPI, que soy un desagradecido y no te las había dado.  :-*
Title: Re: Problemas con fexists.
Post by: SplinterGU on January 01, 2011, 09:01:17 PM
esto funciona.... (linux y windows)


import "mod_file";
import "mod_say";

begin

say(fexists("lala"));
end


Quote
Z:\tmp>bgdi fexist.dcb
1

Z:\tmp>rm lala
"rm" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

Z:\tmp>del lala

Z:\tmp>bgdi fexist.dcb
0

Z:\tmp>
Title: Re: Problemas con fexists.
Post by: SplinterGU on January 01, 2011, 09:03:38 PM
ahhh, ya entiendo la pregunta... la cosa es que bennu tiene busqueda automatica de archivos, si no se encuentra en el directorio especificado, se busca en el directorio default y en el directorio que se llame igual que la extension del archivo.

por ahora no existe la modalidad de que no haga busqueda automatica, pero podria agregarse algun parametro para tal fin.
Title: Re: Problemas con fexists.
Post by: Fede on January 01, 2011, 09:31:44 PM
Pues intentaré hacer mi propia fexists en Bennu. ;D

Comento por qué la necesito:

El usuario selecciona los ficheros a copiar de una lista.
Antes de compiarlos compruebo si existen en el directorio destino para dar la opción de sobreescribir o no.

Como comprenderás, siempre me dice que existe.  ;D

Saludos.

PD:

Splinter, no interpretes esto como una necesidad imperiosa. Pienso que tienes mejores cosas que hacer.

Creo que puedo hacerme la función a base de intentar acceder a ficheros que no existen e interpretar luego los posibles errores.

Será más lenta pero funcional.

Saludos.
Title: Re: Problemas con fexists.
Post by: SplinterGU on January 01, 2011, 10:05:04 PM
a menos que te crees una funcion en C para eso, desde bennugd no lo vas a poder hacer... bennugd para determinar si existe el archivo, lo abre en modo lectura.

para hacer la apertura de cualquier archivo hace lo siguiente, y en el siguiente orden:

- intenta abrir el archivo en modo normal donde indica el path.
- intenta abrir el archivo en el directorio nominado como la extension del archivo a abrir.
- intenta abrir el archivo en los paths agregados por linea de comandos.

yo creo que esto necesita un argumento adicional o una funcion para setear el comportamiento.

o quizas solo hacer las busquedas cuando solo se especifica el archivo sin path, creo que esto seria lo correcto.
Title: Re: Problemas con fexists.
Post by: Windgate on January 02, 2011, 04:22:06 AM
Quote from: SplinterGU on January 01, 2011, 09:03:38 PM
ahhh, ya entiendo la pregunta... la cosa es que bennu tiene busqueda automatica de archivos, si no se encuentra en el directorio especificado, se busca en el directorio default y en el directorio que se llame igual que la extension del archivo.

por ahora no existe la modalidad de que no haga busqueda automatica, pero podria agregarse algun parametro para tal fin.

Si se lleva a cabo el cambio, aunque ya me imagino que se hará así, pediría que sea con sobrecarga de operadores y se mantenga la llamada original xD
Title: Re: Problemas con fexists.
Post by: SplinterGU on January 02, 2011, 06:13:01 AM
Quote from: Windgate on January 02, 2011, 04:22:06 AM
Quote from: SplinterGU on January 01, 2011, 09:03:38 PM
ahhh, ya entiendo la pregunta... la cosa es que bennu tiene busqueda automatica de archivos, si no se encuentra en el directorio especificado, se busca en el directorio default y en el directorio que se llame igual que la extension del archivo.

por ahora no existe la modalidad de que no haga busqueda automatica, pero podria agregarse algun parametro para tal fin.

Si se lleva a cabo el cambio, aunque ya me imagino que se hará así, pediría que sea con sobrecarga de operadores y se mantenga la llamada original xD

eso no hace falta pedirlo... siempre se hace asi...
Title: Re: Problemas con fexists.
Post by: Fede on January 02, 2011, 07:39:30 AM
Más matao.
Voy a tener que pasar a hacerme un juego.  :P

Ahora en serio. Ya me inventaré algo.
Title: Re: Problemas con fexists.
Post by: Fede on January 02, 2011, 08:57:16 AM
Una posible solución para salir del paso.

Hay que rodarla. Y me acabo de dar cuanta que no se que pasaría si un directorio de llama exactamente igual que un archivo.

Edito: Lista.

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
Title: Re: Problemas con fexists.
Post by: SplinterGU on January 02, 2011, 11:37:26 AM
esa puede servir para la finalidad... karma!
Title: Re: Problemas con fexists.
Post by: Fede on January 02, 2011, 01:17:46 PM
Últimamente me estoy cubriendo de problemas y karmas.  ;D

Gracias, pero humildemente sólo lo posteé como solución temporal por si a alguién le hacía falta.

(A mí me hace falta.)  ;D

Besitos.  :-*
Title: Re: Problemas con fexists.
Post by: SplinterGU on January 02, 2011, 05:57:17 PM
efectivamente es una solucion temporal.
Title: Re:Problemas con fexists.
Post by: Futu-block on February 19, 2019, 09:00:15 AM
Vaya, por lo que veo fexists da problemas, y a mi que me tenía la cabeza loca...
Title: Re:Problemas con fexists.
Post by: Arcontus on February 19, 2019, 10:08:09 AM
Si, a mi también me ha dado problemas de este tipo...
Title: Re:Problemas con fexists.
Post by: FreeYourMind on February 20, 2019, 08:06:52 AM
Vamos a ver chicos, estais respondiendo a un hilo de una beta muy antigua, lo que se ha resuelto despues lo habeis pasado por alto y estais deduciendo cosas que no son, el fexists estoy seguro que se arreglo en betas posteriores hace tiempo.Si lo usais mal es logico que parezca no funcionar, como ejemplo rutas mal formadas
Title: Re:Problemas con fexists.
Post by: Futu-block on February 20, 2019, 08:24:29 AM
enga ya...
pos pasate por mi hilo de ayuda a ver si me lo resuelves
Title: Re:Problemas con fexists.
Post by: Arcontus on February 20, 2019, 09:22:13 AM
Quote from: FreeYourMind on February 20, 2019, 08:06:52 AM
Vamos a ver chicos, estais respondiendo a un hilo de una beta muy antigua, lo que se ha resuelto despues lo habeis pasado por alto y estais deduciendo cosas que no son, el fexists estoy seguro que se arreglo en betas posteriores hace tiempo.Si lo usais mal es logico que parezca no funcionar, como ejemplo rutas mal formadas
No, fexists continua teniendo los problemas que se relatan, puedes probarlo tu mismo. Si tienes el fichero en el path de bennu y le pides que lo busque en una carpeta donde NO esta, fexists te devuelve como que si está.
Darme cuenta de esto me llevó un buen rato en su dia (hace unos meses).
Title: Re:Problemas con fexists.
Post by: panreyes on February 20, 2019, 10:19:56 AM
Quote from: Arcontus on February 20, 2019, 09:22:13 AM
Quote from: FreeYourMind on February 20, 2019, 08:06:52 AM
Vamos a ver chicos, estais respondiendo a un hilo de una beta muy antigua, lo que se ha resuelto despues lo habeis pasado por alto y estais deduciendo cosas que no son, el fexists estoy seguro que se arreglo en betas posteriores hace tiempo.Si lo usais mal es logico que parezca no funcionar, como ejemplo rutas mal formadas
No, fexists continua teniendo los problemas que se relatan, puedes probarlo tu mismo. Si tienes el fichero en el path de bennu y le pides que lo busque en una carpeta donde NO esta, fexists te devuelve como que si está.
Darme cuenta de esto me llevó un buen rato en su dia (hace unos meses).
Esto es muy cierto. Ya no sólo en el path de Bennu, sino también en las carpetas de las extensiones.

Por ejemplo, tengo un archivo 1.ogg en "minis/masteroiddestroyers/ogg" y otro en "ogg/1.ogg".
Si le digo song_load("minis/masteroiddestroyers/ogg/1.ogg") y este archivo no existe, carga el de "ogg/1.ogg".

¿La solución? La carpeta ogg ahora se llama music, y ya no me ocurre el problema
Title: Re:Problemas con fexists.
Post by: FreeYourMind on February 20, 2019, 01:23:40 PM
yo recuerdo tener problemas en un port de open pandora con esto pero afinal eran errores mios no de la funcion, mirare en casa a ver
Title: Re:Problemas con fexists.
Post by: SplinterGU on February 20, 2019, 02:20:21 PM
no es que funcione mal, ya se explico en la pagina anterior.
Title: Re:Problemas con fexists.
Post by: Arcontus on February 20, 2019, 03:18:26 PM
Quote from: SplinterGU on February 20, 2019, 02:20:21 PM
no es que funcione mal, ya se explico en la pagina anterior.
Se explicó en la página anterior un comportamiento no esperado de la función, si es cierto. Pero la función no retorna lo esperado por el programador, ejemplos 3 de momento. Y si el programador no da con este msg o no hace bien las pruebas pues puede darle más de un dolor de cabeza... Ahora, si no puede arreglarse, ahí no me meto.
Title: Re:Problemas con fexists.
Post by: SplinterGU on February 20, 2019, 08:28:09 PM
el comportamiento concuerda con el diseño... no es un error...

el comportamiento que estan suponiendo deberia ser no es el que se hizo en el diseño de fenix/bennugd...
para tener funciones de acceso directo al disco deben usar las funciones glob, dir_open, etc (todas las contenidas en mod_dir), esas no hacen la busqueda en los PATH internos...
si se insiste en usar fexists, tienen que evitar usar directorios que se llamen igual a la extension del archivo a abrir, ni tampoco usar el directorio donde esta el bgdi o directorios incluidos con -i, o dcb con mochila con archivos que se llamen igual... por ejemplo, evitar meter "pepe.png" en una carpeta llamada "png" donde esta el bgdi...
Title: Re:Problemas con fexists.
Post by: SplinterGU on February 20, 2019, 08:40:14 PM
perdon si me han odiado por mi respuesta...
Title: Re:Problemas con fexists.
Post by: Arcontus on February 21, 2019, 12:01:12 AM
Quote from: SplinterGU on February 20, 2019, 08:40:14 PM
perdon si me han odiado por mi respuesta...
Jajaja, para nada. Te has explicado correctamente.
Title: Re:Problemas con fexists.
Post by: SplinterGU on February 21, 2019, 03:31:42 AM
gracias!
Title: Re:Problemas con fexists.
Post by: Futu-block on February 21, 2019, 07:43:14 AM
Aquí no se odia tan a la ligera, maestro astilla
Title: Re:Problemas con fexists.
Post by: SplinterGU on February 22, 2019, 07:30:46 PM
Quote from: Futu-block on February 21, 2019, 07:43:14 AM
Aquí no se odia tan a la ligera, maestro astilla

:)