Pascal/Turbo Pascal - archivo

 
Vista:

archivo

Publicado por Juan (5 intervenciones) el 09/03/2007 01:40:49
holas a todos.. le comento q no entiendo mucho, va nada de archivos... y tengo q realizar un programa q me deje entrar 6 numeros del 1 al 4. estos numeros guardarlos en un archivo... luego leer este archivo y tb poder modificar alguno de ellos... (esto ultimo no es tan importante) una cosita mas esos numeros los voy a tener q usar para un programa q ya tengo armado... les doy mil gracias.. y disculmen las molestias...
necesito el programa paso a paso asi lo puedo entender....
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:archivo

Publicado por Carlos Guimaraenz (265 intervenciones) el 09/03/2007 02:21:19
Hola Juan! no voy a hacerte el programa, te voy a explicar un poco el tema de archivos:

Podés crear diferentes tipos de archivos, como ser de texto o de algún tipo (predefinido o definido por el usuario).

Primero asignás a una variable de ese tipo de archivo el nombre físico. Luego, lo abrís, o lo creas, según exista o no, y si podés reescribirlo o no.
A partir de ahi, tenés métodos para leer (read), escribir (write), posicionar el puntero en una posición (seek), y algunas funciones como filePos (devuelve la posición del puntero de archivo), fileSize (devuelve el tamaño del archivo). Hay más, pero esas te van a ser más que suficientes.

Te muestro un ejemplo:

type
TArchivo = file of integer;

var
a : TArchivo;
i : byte;
begin
{ asigno el archivo físico }
Assign(a, 'archivo.dat');
{ creo el archivo o lo reescribo si existe. Con Reset lo abres (si existe) }
ReWrite(a);
for i:=1 to 10 do
Write(a, i); {escribo del 1 al 10 en el archivo}
Close(a); { cierro el archivo }
Reset(a); { abro el archivo (no hacía falta cerrarlo, pero es una buena práctica) }
Seek(a, 6); { salta a la 7ma posición (empieza en 0 -cero-) }
read(a, i); { leo el contenido del archivo y lo guardo en la variable i }
write(i); { muestro el contenido de la variable i en pantalla }
end. { end programa }

Para modificarlo, haces un seek a la posición que deseas modificar y haces Write del dato en el archivo.

Resumiendo, las operaciones más usadas son:

Assign --> asigna el nombre físico al nombre lógico
ReWrite --> reescribe o crea un archivo (si existe o no, respectivamente)
Reset --> abre un archivo existente (dá error si no existe)
Close --> cierra un archivo (si no está abierdo dá error)
Read --> lee desde un archivo a una variable{ read(archivo,variable) }
Write --> escribe a un archivo
Seek --> posiciona el puntero en pos { seek(archivo,pos) }
FilePos --> devuelve la posición del puntero (1º dato=0) { pos:=filePos(archivo) }
FileSize --> devuelve la cantidad de datos { si tiene 5 registros, devuelve 5 }

Intentá con esto, si te trabás volvé a consultarnos. 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:archivo

Publicado por Juan (5 intervenciones) el 11/03/2007 04:43:32
Capo muchas gracias...
la verdad q me ayudo , para tener una idea de como poder hacer las cosas y ver como funcionan...
ahora quiero saber lo siguiente.. yo cree lo siguiente y nose bien como puedo hacer para escribirlos y luego leerlos....
type
alumno = record
Numero:integer;
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:archivo

Publicado por juan (2 intervenciones) el 11/03/2007 04:47:03
type
alumno=record;
Numero:integer;
suer: array [0..30] of integer;
quiero guardar numeros a la suerte en ese array y luego los quiero leer como puedo hacer?? siempre con archivos..
te agradesco un monto...
y desde ya muchas gracias...
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:archivo

Publicado por Carlos Guimaraenz (265 intervenciones) el 11/03/2007 17:28:05
Si declarás:

TArchivo = file of alumno;

Luego usas la variable de tipo TArchivo para leer el registro entero.
Te pongo un ejemplo con tu propia declaración de tipos:

TYPE
alumno=record;
Numero:integer;
suer: array [0..30] of integer;
end;

TArchivo = file of alumno;

var
al : alumno;
arch : TArchivo;

Para llenar el registro, podés hacer:
randomize;
al.nombre := 'Juan';
al.numero := 5;
for i:= 1 to 30 do
al.suer[i] := random(x);

Luego, guardas en el archivo:
write(arch, al); { guardas y lees el registro entero }
read(arch, al);

El Seek lo usás en cantidad de registro. Por ejemplo, si querés acceder al 5º registro del archivo, usás Seek(arch,4).

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