
Se me cierra el archivo
Publicado por Francisco (9 intervenciones) el 08/03/2016 23:46:39
Buenas tardes. Desde ayer que estoy tratando de terminar de correr este programa que es de un examen final. Se trata de un procedure que realiza la carga de datos a un archivo. Cuando ingreso el 'nombre del propietario' lo que trato de hacer es que revise en el archivo para ver si ya habia sido agregado antes, de ser asi, que ingrese la mercaderia traida. Si el 'nombre del propietario' NO se encuentra en el archivo, que se agregue el nombre al registro y que pida posteriormente, la mercaderia. El problema esta cuando el programa comienza a buscar en el archivo para ver si se encuentra el nombre o no. Cuando el programa pasa por ahi, lo cierra sin razon. El error lo tira mientras se esta corriendo el programa, no es un error de codificacion Si alguien sabe el por que, se lo agradecería! :) Dejo el programa codificado en pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
program pescaderia;
uses crt;
type
registrobarcos = record
nom: string[40];
cod: char;
peso: integer;
total: real; end;
A1 = file of registrobarcos;
var
archi: A1;
reg,reg2: registrobarcos;
opc: char;
opt: string[10];
i,j: integer;
nom: string[20];
procedure cargaarchi;
begin
repeat
clrscr;
writeln('Ingresar nuevo barco? 1.Si /2.No');
readln(opc);
until(opc>='1')and(opc<='2');
while opc='1' do
begin
write('Ingrese nombre de propietario: '); { AQUI COMIENZA EL ERROR}
readln(nom);
reset(archi);
repeat
read(archi,reg)
until (reg.nom=nom)or(eof(archi)); {Busca el nombre en el registro)}
if (reg.nom<>nom) then
begin
reg.nom:=nom; {Si no esta, lo agrega}
write('Ingrese Codigo de pescado: ');
readln(reg.cod);
write('Ingrese Kg: ');
readln(reg.peso);
reg.total:=importe(reg.cod,reg.peso);
seek(archi,filepos(archi)-1);
write(archi,reg);
writeln('agregado');
clrscr;
writeln('Ingresar nuevo barco? 1.Si /2.No');
readln(opc);
end;
if (reg.nom=nom) then {Si está, continua con el resto}
begin
write('Ingrese Codigo de pescado: ');
readln(reg.cod);
write('Ingrese Kg: ');
readln(reg.peso);
reg.total:=importe(reg.cod,reg.peso);
seek(archi,filepos(archi)-1);
write(archi,reg);
writeln('agregado');
clrscr;
writeln('Ingresar nuevo barco? 1.Si /2.No');
readln(opc);
end;
end;
end;
Valora esta pregunta


0