Pascal/Turbo Pascal - archivo

   
Vista:

archivo

Publicado por a. wai (4 intervenciones) el 30/10/2011 00:33:26
hola sy nuevo con esto de archivo en pascal y me da error y no entiendo bien q es lo q pasa je si me podrian ayudar plz

program vialey;
type
alumno=record
nrolegajo:integer;
apellido:string;
nombre:string;
end;
vector=array[1..100]of alumno;
archivo=file of alumno;
var
reg:alumno;
vec:vector;
arc:archivo;
procedure alta (var arcalu:archivo);
var
regalu:alumno;
tecla:char;
begin
rewrite(arcalu);
read(tecla);
while tecla <> 'N' do
begin
with regalu do
begin
read(nrolegajo);
read(apellido);
read(nombre);
end;
read(tecla);
end;
close (arcalu);
end;

procedure visualizar(var arcalu:archivo);
var
regalu:alumno;
begin
reset(arcalu);
while not (EoF(arcalu))do
begin
read(arcalu,regalu);
write(regalu.nrolegajo);
write(regalu.nombre);
write(regalu.apellido);
end;
close(arcalu);
end;
procedure modificar(var arcalu:archivo ; legajo:integer);
var
regalu:alumno;
nombre:string[100];
begin
reset (arc);
read(arcalu,regalu);
while not (EoF(arcalu) and (regalu.nrolegajo <> legajo)) do
read(arcalu,regalu);
if (regalu.nrolegajo=legajo) then
regalu.nombre := nombre;
Seek(arcalu,Filepos(arcalu)-1);
write(arcalu,regalu);
close(arcalu);
end;
begin
assign(arc,'/home/polaco/vialey.pas');
alta(arc);
visualizar(arc);
read(vector.nrolegajo);
read(nombre);
modificar(arc,legajo);
end.

me da estos errores

vialey.pas(58,20) Warning: Local variable "nombre" does not seem to be initialized
vialey.pas(67,13) Error: Illegal qualifier
vialey.pas(68,12) Error: Identifier not found "nombre"
vialey.pas(69,21) Error: Identifier not found "legajo"
vialey.pas(71) Fatal: There were 3 errors compiling module, stopping

y nc q honda
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

archivo

Publicado por ramon (2072 intervenciones) el 30/10/2011 17:23:16
{Revisa los cambios realizados en tu programa}


program vialey;
uses
crt;
type
alumno = record
nrolegajo : integer;
apellido : string;
nombre : string;
end;
vector = array[1..100]of alumno;
archivo = file of alumno;
var
reg : alumno;
vec : vector;
arc : archivo;
nombre : string;

procedure alta (var arcalu : archivo);
var
regalu : alumno;
tecla : char;
begin
rewrite(arcalu);
writeln('Pulsa tecla [N] termina');
read(tecla);
while upcase(tecla) <> 'N' do
begin
with regalu do
begin
writeln('ENTRE N§ : ');
readln(nrolegajo);
writeln('ENTRE APELLIDO : ');
readln(apellido);
writeln('ENTRE NOMBRE : ');
readln(nombre);
write(arcalu,regalu);
end;
clrscr;
writeln('Pulsa tecla [N] termina');
read(tecla);
end;
close (arcalu);
end;

procedure visualizar(var arcalu : archivo);
var
regalu : alumno;
begin
clrscr;
assign(arcalu,'c:\tp\vialey.pas');
reset(arcalu);
while not (EoF(arcalu))do
begin
read(arcalu,regalu);
writeln('N§ = ',regalu.nrolegajo);
writeln('Nombre = ',regalu.nombre);
writeln('Apellido = ',regalu.apellido);
end;
close(arcalu);
end;

procedure modificar(var arcalu : archivo; legajo : integer);
var
regalu : alumno;
anter : string;
i : longint;
begin
anter := ' ';
assign(arcalu,'c:\tp\vialey.pas');
reset(arcalu);
i := 0;
seek(arcalu,i);
read(arcalu,regalu);
while not (EoF(arcalu) or (regalu.nrolegajo = legajo)) do
begin
i := i + 1;
Seek(arcalu,i);
read(arcalu,regalu);
end;
if regalu.nrolegajo = legajo then
begin
anter := regalu.nombre;
regalu.nombre := nombre;
seek(arcalu,i);
write(arcalu,regalu);
end;
writeln('Antes : ',anter);
writeln('Se Modifico A : ',regalu.nombre);
close(arcalu);
repeat until keypressed;
end;

begin
clrscr;
assign(arc,'c:\tp\vialey.pas');
alta(arc);
visualizar(arc);
clrscr;
writeln('Entre N§ legajo : ');
readln(reg.nrolegajo);
writeln('Entre Nombre : ');
read(nombre);
modificar(arc,reg.nrolegajo);
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

archivo

Publicado por Carlos Cuye cachosistemas@hotmail.com (7 intervenciones) el 31/10/2011 19:59:20
vialey.pas(58,20) Warning: Local variable "nombre" does not seem to be initialized

Este error te advierte que la variable llamada 'nombre' no ha sido inicializada.
Eso es porque definiste un 'registro' llamado 'Alumno', con varios campos.
Debés referenciarlos en la forma Registro.Campo, según te lo corrigió Ramón.
Al referenciar al campo 'nombre' sin el nombre del registro 'Alumno', el compilador busca una 'Variable' llamada 'nombre', la cual no existe.

Todos los demás errores aparecen por el mismo error de sintaxis.

vialey.pas(67,13) Error: Illegal qualifier
Utilizaste 'nombre' en vez de 'alumno.nombre'

vialey.pas(68,12) Error: Identifier not found "nombre"
Utilizaste 'nombre' en vez de 'alumno.nombre'

vialey.pas(69,21) Error: Identifier not found "legajo"
Utilizaste 'legajo' en vez de 'arc.nrolegajo'
Definiste tu archivo 'arc' con la misma estructura del registro 'alumno', el cual tiene un campo llamado 'nrolegajo', y no 'legajo'.

No te desalientes! Son errores comunes que tenemos al iniciarnos.
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

archivo

Publicado por Carlos Cuyé cachosistemas@hotmail.com (7 intervenciones) el 31/10/2011 20:04:35
Además en ese último error, utilizaste una coma en vez de punto para separar el nombre del registro del nombre del campo.
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