Programación General > Pascal

 Validacion De Ubicacion De Archivo

(1/1)

saitamx:
Hola, resulta que tengo este problema y no  se me ocurre una solucion.

Mediante un programa le pido al usuario que indique la ubicacion del archivo que se utilizara. Ahora, en caso de que el usuario se equivoque e ingrese algo como "c:\mis documentos\\\"  al querer crear el archivo, el programa pincha.  Lo mismo se aplica si por ejemplo el usuario da una direccion con carpetas inexistentes.
Como podria detectar el error antes de que pinche?


--- Código: Text ---program direcciones; usescrt,dos; typetarchivo= file of string; varrutas:tarchivo;nomb,nombres:string; function validar():string;vars:string;c:char;validos:set of char&#59;n:integer;cod:longint; Begins:='';validos:=['a'..'z','\',':','.'];repeatc:=readkey;if c in validos thenbeginwrite(c);s:=s+c;enduntil c=#13;validar:=s;end; beginclrscr;assign(rutas,'rutas.dat');rewrite(rutas);write('Ingrese ruta del archivo de facturas:');nombres:=validar(); write(rutas,nombres);close(rutas); reset(rutas);read(rutas,nombres);close(rutas); assign(nomb,nombres);{$I-}reset(nomb);{$I+}if (ioresult<>0) thenrewrite(nomb);write(nomb,'pepe');close(nomb);readkey;end.    

Desde ya muchas gracias

saitamx:
Ya lo solucione.  :P  Perdon por las molestias, borren el topic.

Enko:
Tambien puedes desactivar temporalmente la verificacion de la entrada/salida y comprobar tu mismo los errores con IOResult.

Para desactivar la verificacion de I/O: {$I-}
Para activar la verificacion de I/O: {$I+}
Nota que {$Letra,+/-} son directivas de compilacion y no comentarios
y luego tenes a la funcion IOResult que es distinto de 0 si algo paso mal

Lo que hace este codigo es resetear  un Archivo de  NOmbre Archivo, si este no existe crea uno nuevo.


--- Código: Text ---  Assign(Archivo, 'Archivo.dat');  {$I-}    Reset(Archivo);    if IOResult <> 0 then {archivo no existe}    begin      WriteLn('No se encuentra el archivo');      WriteLn('Desea crear uno nuevo');      res := ReadKey;      if (res = 's') or (res = 'S') then ReWrite(Archivo);    end;  {$I+}end;  
La funcion IOResult devuelve varios valores además de cero con distintos mensajes de error, lo que si, es que no tengo ahora la tabla de los errores. <_<

Navegación

[0] Índice de Mensajes

Ir a la versión completa