Problemas con fexists.

Started by Fede, January 01, 2011, 09:42:03 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Fede

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


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

proba usando la barra de division.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

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).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Fede

#3
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.  :-*
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

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>
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Fede

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

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

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
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

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...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Fede

Más matao.
Voy a tener que pasar a hacerme un juego.  :P

Ahora en serio. Ya me inventaré algo.
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.

Fede

#11
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
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

esa puede servir para la finalidad... karma!
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Fede

Ú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.  :-*
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

efectivamente es una solucion temporal.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2