Problema al Aparear Archivos
Publicado por Damian (2 intervenciones) el 13/09/2012 00:57:17
Hola, tengo 4 archivos,debo aparearlos y generar solo uno. El error que aún no encuentro es que cuando compilo y lo hago correr, voy a la carpeta "BIN" de pascal, para ver si se creó el archivo final del apareo(BSAS), y solo me aparece "Zona34.dat"
Les dejo el código.
Program Tp1;
uses crt;
const
HIGH_VALUE= 1232;
type
Str4= string [4];
Str5= string [5];
RegFecha= record
dd,
mm: byte;
aaaa:word
end;
RegZona= record
NroPat: Str4;
NroRegCond: longint;
rFecinf: RegFecha;
CodDestPol,
CodInfr: word;
NroIdPol: Str5;
end;
ArcZona= file of RegZona;
Procedure Abrir (var Zona1, Zona2, Zona3, Zona4, BSAS, Zona12, Zona34:ArcZona);
Begin
Assign (Zona1, 'Zona1.dat');
Assign (Zona2, 'Zona2.dat');
Assign (Zona3, 'Zona3.dat');
Assign (Zona4, 'Zona4.dat');
Filemode:=0;
Reset (Zona1);
Reset (Zona2);
Reset (Zona3);
Reset (Zona4);
Assign (Zona12, 'Zona12.dat');
Rewrite (Zona12);
Assign (Zona34, 'Zona34.dat');
Rewrite (Zona34);
Assign (BSAS, 'BSAS.dat');
Rewrite (BSAS);
end;
Procedure LecEsp (var f:ArcZona; var r:RegZona; var Cv:word);
Begin
if not eof(f) then begin
read(f,r);
cv:= r.rFecInf.mm*100+r.rFecInf.dd;
end
Else begin
cv:= HIGH_VALUE;
end;
end;
Procedure Apareo (var Mae, Nov, NovMae:ArcZona);
var
rMae,
rNov,
rNovMae:RegZona;
Clv1,
Clv2:word;
Begin
LecEsp(Mae, rMae, clv1);
LecEsp(Nov, rNov, clv2);
While (Clv1 <> HIGH_VALUE) or (Clv2 <> HIGH_VALUE) do Begin
If Clv1 < Clv2 then begin
rNovMae:= rMae;
write(NovMae, rNovMae);
LecEsp(Mae, rMae, clv1);
end
Else Begin
rNovMae:= rNov;
write(NovMae, rNovMae);
LecEsp(Nov, rNov, clv2);
end;
end;
Seek(NovMae,0)
end;
Procedure Cerrar (var Zona1, Zona2, Zona3, Zona4,Zona12,Zona34,BSAS:ArcZona);
begin
close(Zona1);
close(Zona2);
close(Zona3);
close(Zona4);
close(BSAS);
close(Zona12);
Erase(Zona12);
close(Zona34);
Erase(Zona34);
end;
Var
Zona1,
Zona2,
Zona3,
Zona4,
Zona12,
Zona34,
BSAS:ArcZona;
Begin {BLOQUE PRINCIPAL}
Abrir(Zona1, Zona2, Zona3, Zona4, Zona12, Zona34, BSAS);
Apareo(Zona1,Zona2,Zona12);
Apareo(Zona3,Zona4,Zona34);
Apareo(Zona12,Zona34,BSAS);
Cerrar(Zona1,Zona2,Zona3,Zona4,Zona12,Zona34,BSAS);
end.
Les dejo el código.
Program Tp1;
uses crt;
const
HIGH_VALUE= 1232;
type
Str4= string [4];
Str5= string [5];
RegFecha= record
dd,
mm: byte;
aaaa:word
end;
RegZona= record
NroPat: Str4;
NroRegCond: longint;
rFecinf: RegFecha;
CodDestPol,
CodInfr: word;
NroIdPol: Str5;
end;
ArcZona= file of RegZona;
Procedure Abrir (var Zona1, Zona2, Zona3, Zona4, BSAS, Zona12, Zona34:ArcZona);
Begin
Assign (Zona1, 'Zona1.dat');
Assign (Zona2, 'Zona2.dat');
Assign (Zona3, 'Zona3.dat');
Assign (Zona4, 'Zona4.dat');
Filemode:=0;
Reset (Zona1);
Reset (Zona2);
Reset (Zona3);
Reset (Zona4);
Assign (Zona12, 'Zona12.dat');
Rewrite (Zona12);
Assign (Zona34, 'Zona34.dat');
Rewrite (Zona34);
Assign (BSAS, 'BSAS.dat');
Rewrite (BSAS);
end;
Procedure LecEsp (var f:ArcZona; var r:RegZona; var Cv:word);
Begin
if not eof(f) then begin
read(f,r);
cv:= r.rFecInf.mm*100+r.rFecInf.dd;
end
Else begin
cv:= HIGH_VALUE;
end;
end;
Procedure Apareo (var Mae, Nov, NovMae:ArcZona);
var
rMae,
rNov,
rNovMae:RegZona;
Clv1,
Clv2:word;
Begin
LecEsp(Mae, rMae, clv1);
LecEsp(Nov, rNov, clv2);
While (Clv1 <> HIGH_VALUE) or (Clv2 <> HIGH_VALUE) do Begin
If Clv1 < Clv2 then begin
rNovMae:= rMae;
write(NovMae, rNovMae);
LecEsp(Mae, rMae, clv1);
end
Else Begin
rNovMae:= rNov;
write(NovMae, rNovMae);
LecEsp(Nov, rNov, clv2);
end;
end;
Seek(NovMae,0)
end;
Procedure Cerrar (var Zona1, Zona2, Zona3, Zona4,Zona12,Zona34,BSAS:ArcZona);
begin
close(Zona1);
close(Zona2);
close(Zona3);
close(Zona4);
close(BSAS);
close(Zona12);
Erase(Zona12);
close(Zona34);
Erase(Zona34);
end;
Var
Zona1,
Zona2,
Zona3,
Zona4,
Zona12,
Zona34,
BSAS:ArcZona;
Begin {BLOQUE PRINCIPAL}
Abrir(Zona1, Zona2, Zona3, Zona4, Zona12, Zona34, BSAS);
Apareo(Zona1,Zona2,Zona12);
Apareo(Zona3,Zona4,Zona34);
Apareo(Zona12,Zona34,BSAS);
Cerrar(Zona1,Zona2,Zona3,Zona4,Zona12,Zona34,BSAS);
end.
Valora esta pregunta


0