[ Foro de Pascal ]

Presentación y pregunta

16-Nov-2010 19:26
Keitaro Orashima Nagato
2 Respuestas

en archivos quiero generar un archivo de texto que si no existe yo pueda crear un nombre y guardarlo con ese nombre, ejemplo:
guardar archivo como:
Digite nombre del archivo: qsaxdfvc.txt
archivo qsaxdfvc.txt guardado


16-Nov-2010 22:43
Antonio P.G.

Hola Keitaro.


A ver, te cuento como yo hice esto en su día. Primero, para ver si existe un archivo:

Existe una función del sistema, "IOResult", que devuelve "0" si la última operación de input-output (de ahí su nombre) se realizó con éxito, y en caso contrario, devuelve otro número que indica el tipo de error ('archivo o encontrado', 'imposible abrir',...).

Además, para esto necesitas abrir el interruptor de chequeo de input-output. Esta directiva de ejecución es "{$I-}". Para cerrar, es "{$I+}". Se te fijas, va entre llaves.

Así, puedes crearte una función booleana que diga si un archivo existe o no. Ahora, como esto me resultó un poco complicado, te dejo aquí un trozo de código que te puede ayudar:

".........
assign (nombre_archivo,ruta); {Se vincula.}
{$I-}    { Usamos la directiva para que si intenta abrir un archivo que no existe, no termine el programa cuando se ejecuta.}
reset (nombre_archivo);  {Abrimos el archivo.}
if IOResult = 0 then
..writeln ('El archivo existe.')
else
..writeln ('El archivo no existe.');
{$I+} {Volvemos a cerrar el interruptor.}
.................."

Por cierto, "ruta" es una variable de tipo "string", y "nombre_archivo" es de tipo "text".

El segundo aspecto, el de crear el archivo. Lo que yo hago para esto, es abrir el archivo para escribir, no escribir nada, y luego lo cierro (cerrándolo se guarda el contenido). Ejemplo:

"........
assign (nombre_archivo,ruta);
rewrite (nombre_archivo);
close (nombre_archivo);
........."

Por último, si lo que pretendes es que el usuario le dé un nombre, puedes pedirle al usuario que de la ruta completa (deberá conocer las carpetas) o si se va a almacenar la información siempre en la misma carpeta, le pides sólo el nombre del archivo:

"..........
ruta:= 'C:\...\...\';
ruta_completa:= ruta + el_nombre + '.txt';
assign (nombre_archivo, ruta_completa);
..........."

(Tu presentación breve, por cierto.)  ;-)

Si tienes dudas, pregunta, ¿ok?

¡Ciao!


17-Nov-2010 17:03
Keitaro Orashima Nagato

Hola Antonio, quiero agradecerte por las luces que me diste para la solución de mi código con archivos. y los mensajes son cortos y trato de hacerlo lo mas concisos y explicativos posibles por varias razones, una en especial es que me conecto atreves de un café Internet y cada minuto es oro ya que en la provincia que me encuentro el ancho de banda es muy pequeño y te imaginaras los problema que atrae. dándote un cordial saludo y agradeciéndote nuevamente por tu respuesta me despido muy cordialmente:
                       Keitaro.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)