Pascal/Turbo Pascal - Archivos de texto

   
Vista:

Archivos de texto

Publicado por Juan (5 intervenciones) el 31/10/2007 23:57:02
Hola les queria hacer una consulta:

Yo estoy recien entrando a ver archivos de texto.

Quiero hacer un programa que me cree una base de datos por ejemplo de usuarios y contraseñas en un txt.
Agregar a estos es facil pero se me complica a la hora de por ejemplo querer cambiarle la contraseña a uno de los usuarios.
me dijeron que hay que recorrer el archivo de texto linea a linea, hasta donde esta el usuario con sus datos ej
Usuario1#contraseña
Usuario2#contraseña
luego copiar esto a un archivo auxiliar pero realmente no entendi mucho busque en apuntes pero no eh podido solucionar nada, agradeceria que alguien me diera una mano explicandome o me tire un ejemplo de donde pueda sacar algo.

Desde ya muchas gracias!!! Por favor si me pueden contestar a mi casilla mejor, gracias

PD: La pagina esta buenisima, agradezco al que dedica tiempo a explicar a gente que como yo no sabemos mucho del tema y queremos aprender.
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:Archivos de texto

Publicado por Mariano (57 intervenciones) el 01/11/2007 00:11:25
Hola!, Mira el problema que tenes con los archivos de texto son dos:
primero, que unicamente, podes leerlo secuencialmente, es decir, linea por linea, hsta encontrar lo que buscas.
Segundo, que el archivo de texto, a diferencia de los archivos binarias, solo se pueden abrir para leer o solo para escribir, no podes leer y escribir.
Si no me confundo, a los archivos de texto le puedes hacer rewrite(archivo) apra crearlo y escrbir, reset(archivo) UNICAMENTE para leerlo, o append(archivo) para leer un archivo de texto ya creado, pero que coloca automaticamente el puntero al final del archivo. Es decir que a un archivo que ya existe, si mal no recuerdo, no puedes modificarle alguna linea anterior.
Es por eso, que lo que te conviene, es ir leyendo una linea del archivo de texto, y pasarlo a un archivo binario, donde se puedes ir a la posicion que quieres, puedes abrilo para leer y escribir, leer directamente, no secuencialmente, etc etc, y una vez q modificaste el archivo binario, volver a generar un archivo de texto.

No se si quedo claro? Cualquier cosa, volve a preguntar :)

Un abrazoo
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:Archivos de texto

Publicado por Alex (1 intervención) el 01/11/2007 01:59:57
No lo ayudes!! es competencia para el futuro.............
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:Archivos de texto

Publicado por Diego Romero (997 intervenciones) el 05/11/2007 15:12:44
Pero también es un futuro empleado o socio o compañero de trabajo ;).
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:Archivos de texto

Publicado por Mechanic (181 intervenciones) el 01/11/2007 04:12:56
Hola Juan !
En los archivos de texto no es posible leer y escribir en el mismo archivo. Así se necesita almacenar la nueva lista de nombres y contraseñas en un segundo archivo.

Te he creado un programita que hace eso..

Tienes que hacer con un editor de texto como el Block de Notas o con Pascal si quieres, un archivo de texto con nombres y contraseñas(El nombre en una línea y la contraseña en la siguiente línea, luego el otro nombre en la siguiente línea y así sucesivamente..

Hazlo como ves aquí y le pones de nombre prueba.dat
Pon atención en que Anacleto tiene como contraseña Natacion

Luis
futbol
Carlos
programacion
Anacleto
Natacion
Sandra
miamor

Luego crea otro archivo en blanco con nombre prueba2.dat (vacío)

He aquí el programa:

{Cambia el password de Anacleto}
Program Cambia;
var Nombre : String[20];
Password : String[20];
archA, archB : text;

begin
assign(archA,'prueba.dat');
assign(archB,'prueba2.dat');
reset(archA);
rewrite(archB);
while not seekeof(ArchA) do
begin
readln(archA, Nombre);
readln(archA, Password);

if Nombre = 'Anacleto' then Password := '1969';

writeln(archB, Nombre);
writeln(archB, Password);
end;{while}
close(archA);
close(archB);
end.

Ahora el password de Anacleto es 1969 (Revisa prueba2.dat)
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:Archivos de texto

Publicado por Mechanic (181 intervenciones) el 01/11/2007 04:27:09
Ah! se me escapó comentar el código. Esto siempre hay que hacerlo.

{Cambia el password de Anacleto}
Program Cambia;
var Nombre : String[20];
Password : String[20];
archA, archB : text;

begin
assign(archA,'prueba.dat'); {Asigna la variable archA al archivo prueba.dat}
assign(archB,'prueba2.dat');
reset(archA); {Prepara el archivo para lectura}
rewrite(archB); {Prepara para escritura (tambien borraria su contenido)}
while not seekeof(ArchA) do {mientras que no llegue al final del archivo repita..}
begin
readln(archA, Nombre); {lee línea del archivo y almacena en variable Nombre}
readln(archA, Password); {lee la siguiente línea del archivo y almacena..}

if Nombre = 'Anacleto' then Password := '1969';

writeln(archB, Nombre); {escribe el contenido de Nombre en una línea del arch}
writeln(archB, Password); {escribe el contenido de Password en siguiente linea}
end;{while}
close(archA); {cierra el archivo (importante)}
close(archB);
end.

Si no te funciona vuelve a postear!
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:Archivos de texto

Publicado por Mariano (57 intervenciones) el 01/11/2007 17:56:01
Holaa!!! Lo que te mando mechanic, creo q esta bien, no lo leii todo, la unica correcion es que la condicion para entrar al ciclo while es
while not eof(archivo) do

NO while not seekeof(archivo)!

el seek es una sentencia que se usa para poner el puntero en un determinada posicion del archivo
seek (archivo, posicion);

Nada mas que eso :)
un abrazoo!
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:Archivos de texto

Publicado por Mechanic (181 intervenciones) el 01/11/2007 20:40:12
Hola a todos!
Mariano tiene razón en que el seek es una sentencia que se usa para poner el puntero en una determinada posicion del archivo, pero seekeof no es lo mismo que seek.

La verdad es que para hacer el programita para Juan tuve que recurrir a mi libro de Pascal porque siempre hay cositas que a uno se le olvidan.
Me gustaría mucho que vieran una parte de texto que saqué de mi libro:

--------------------------------------------------------------
Función eof versus función seekeof. Un peligro potencial de la función eof es que tiene el valor verdadero sólo si el apuntador está en el marcador eof. Así, por ejemplo si al teclear un archivo de texto se presiona Enter después de teclear el último elemento de datos, una marca eoln extra se incluirá como parte del archivo. Con tal archivo existe el riesgo que una programa que utilice un ciclo while para leer el archivo entre al cuerpo del cilclo una vez más (produciendo basura) debido a que eof(archA) no será verdadero inmediatamente des pués de que se lee el último dato real.

seekeof. En Turbo versión 4.0 y superior existe la función booleana seekeof. Esta es más segura que eof porque salta los espacios en blanco y los caracteres de control al buscar el final del archivo. Esto es, seekeof(archA) será verdadero no sólo si el apundador está al final del archivo, sino también si los únicos caracteres que quedan son caracteres de control, tales como marcadores de fin de línea. Así, seekeof(archA) será verdadero si todos los datos han sido leidos.

De aquí en adelante, utilizaremos seekeof en lugar de eof en los encabezados de los ciclos while que lean los contenidos de los archivos de texto.
------------------------------------------------------------
Mi libro es: Turbo Pascal con aplicaciones 4.0-6.0 Segunda Edición
Grupo Editorial Iberoamérica.
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:Archivos de texto

Publicado por Mariano (57 intervenciones) el 01/11/2007 21:35:54
Ahh mira vos, realmente manejo mucho archivos, y realmente desconocia esa sentencia, pero todos los dias se aprenden cosas nuevas :)
Gracias x tu aporte, y disculpa mi correccion,

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:Archivos de texto

Publicado por qarol (1 intervención) el 05/06/2009 22:33:30
biiieenn biieenn... seann siinncero0sss!!!!!
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:Archivos de texto

Publicado por Juan (5 intervenciones) el 03/11/2007 19:11:58
Muchas gracias !!!!a los que respondieron mi pregunta, la verdad que cada vez que estoy trabado con algo de pascal, aca me lo han sabido explicar, esta pagina esta buenisma!!!
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