Pascal/Turbo Pascal - sobre create

 
Vista:

sobre create

Publicado por rodrigo (8 intervenciones) el 07/11/2006 15:37:05
holaa.. estoy haciendo un programa donde creo un archivo (rodrigo.txt) con [rewrite], donde queda la fecha,ora grabada,el nombre de usuario.. y dejas un mensaje.. el problema es que yo quiero q cada ves q alguien agregue un mensaje, se guarde en el archivo rodrigo.txt pero el problema es que se borra por que uso la expresion rewrite.. append, y reset, write, no me sirven por que necesito tener creado el archivo... como puedo crear un archivo abrirlo y modificarlos sin que se borre la informacion anterior
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:sobre create

Publicado por Carlos Guimaraenz (265 intervenciones) el 07/11/2006 16:39:08
Hola Rodrigo! a continuación te muestro un ejemplo:

program Archivos;
uses crt;

{el procedure para guardar el mensaje (aquí sólo guardo un nombre)}
procedure GuardarMensaje(var archivo : text);
var
nombre : string;
begin
ClrScr;
Write('Nombre: '); ReadLn(nombre);
WriteLn(archivo,nombre); {escribo en el archivo pasado por parámetro}
end;

var
archivo : text;
begin
Assign(archivo,'MENSAJES.TXT');
{$i-}
Append(archivo);
{$i+}
if IOResult <> 0 then
ReWrite(archivo);
GuardarMensaje(archivo);
Close(archivo);
end.

Lo que hacen las directivas de compilación {$i} es chequear la operación de entrada/salida, en este caso hacer el APPEND. Al invocar {$i-}, evito que, de producirse un error (por no existir el archivo), el programa se detenga. Inmediatamente después de llamar a Append, vuelvo a habilitarla. Luego, chequeo el resultado de esa operación con IOResult, que si es igual a 0 (cero) significa que no hubo error y prosigo a guardar el archivo, y si el resultado es diferente a cero, significa que el archivo no existe y por lo tanto lo creo, y luego llamo al procedure GuardarMensaje y cierro el archivo.

Un abrazo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sobre create

Publicado por Diego Romero (996 intervenciones) el 09/11/2006 18:14:51
Otra solución:

uses Crt;

const
NombreArchivo='rodrigo.txt';

var
UltimoError: integer;
Archivo: text;

function ExisteArchivo(NF: string): boolean;
var
Arch: Text;
begin
Assign(Arch, NF); { Asigna el nombre físico al lógico }
{$i-} { Deshabilita el control automático de errores de entrada/salida }
Reset(Arch); { Trata de abrir el archivo }
{$i+} { Habilita el control de errores de E/S }
UltimoError:=IOResult; { Se almacena el último error de E/S }
If UltimoError = 0 then { Si es igual a cero, el archivo existe y es accesible }
begin
Close(Arch); { Cierro el archivo para no interferir en próximas utilizaciones del archivo }
ExisteArchivo:=true; { Devuelvo true a la función }
end
else ExisteArchivo:=false; { Devuelvo false a la función }
end; { ExisteArchivo }

procedure CrearArchivo(NF: string);
var
Arch: text;
begin
Assign(Arch,NF); { Asigna el nombre físico al lógico }
Rewrite(Arch);
Close(Arch);
end;

procedure AbrirArchivo(var Arch: text; NF: string);
begin
Assign(Arch,NF); { Asigna el nombre físico al lógico }
Append(Arch); { Subsiguientes writeln al archivo se graban al final }
end;

begin

if not ExisteArchivo(NombreArchivo) then CrearArchivo(NombreArchivo);
AbrirArchivo(Archivo, NombreArchivo);
{ pon aquí lo que quieras agregar al final del archivo }
Close(Archivo);
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar