Problema q se m presenta: :Error al leer el disco
Publicado por Valeska Viloria (2 intervenciones) el 30/06/2005 04:55:03
Hola a todos!! por fa necesito q me ayuden URGENT!!!!!cuando intnto correlo ,m da error al leer los archivos del disco, casi siempre dic q no lo encuentra pro el archivo si exist,y si lo encuentra lo muestra vacío. Aún m faltan algunas modificasiones de string a entero o real. GRACIAS POR LA AYUDA Q ME PUEDAN DAR, SI ES PRONTA SU RESPUESTA SE LAS AGRADEZCO.AQUI LES MANDO UN PEDACITO DEL CODIGO
...declaraciones
Type
Reglibros = Record
Codigo:string[7];
titulo:string[25];
autor,proveedor:string[20];
Precio:string[9];
stactual, stmax, stmin:string [3];
end;
Archlibros = File of reglibros;
Var
libros:archlibros;
Opcion: integer;
Rlibros:Reglibros;
salir: boolean;
logico:boolean;
ArreLibros: arrelib;
stock,stockm,stockma, cant, contped, contfac, contcli,contlib,i,j,n: integer;
Mayusculas:set of letrasmay;
minusculas:set of letrasmin;
cod1:string[7];
Resultado:integer;
procedure inverlib(arl: arrelib; contl: integer);
var
aux:reglibros;
Begin
repeat
{$i-}
rewrite(libros);
resultado:=IOresult;
{SI+}
if resultado<>0 then
writeln('El archivo de libros no se ha encontrado.')
until (resultado=0);
For j:=1 to contl do
Begin
aux:=arl[j];
write(libros,aux); end; {fin For} close(libros);
end;{fin inverlib}
Procedure llenarLib(var arl: arrelib; var contl: integer);
{Este Procedimiento guarda los registros de cada libro en un Arreglo, antes de ordenarlo}
Begin
repeat
{$i-}
reset(Libros); resultado:=IOresult;
{SI+}
if resultado<>0 then
writeln('El archivo de libros no se ha encontrado.')
until (resultado=0);
read(libros,rlibros);
contl:=0;
while (Not EOf) do
begin
contl:=contl+1;
arl[contl]:=rlibros;
read(Libros, rlibros);
end;{while not eof}
close(libros)
end;{Procedure llenlib}
procedure burb_lib(var ArL: arrelib; contl:integer);
{este procedimiento ordena el arreglo por el metodo de burbuja}
Var
aux: reglibros;
begin
For j:=1 to (contlib-1) do
for n:=1 to (contlib-1) do
If Arl[n].codigo>Arl[n+1].codigo then
Begin
aux:= Arl[n];
ArL[n]:=Arl[n+1];
Arl[n+1]:=aux;
end;{Fin if}
end;{procedure Burbuja_libros}
procedure ordenlib;
begin
llenarlib(arrelibros,contlib);
burb_lib(arrelibros,contlib);
inverlib(arrelibros, contlib);
end;{Ordenar_arreglo_libros}
Procedure busc_lib(aut:string);
begin
repeat
{$i-}
reset(libros);
resultado:=IOresult;
{SI+}
if resultado<>0 then
writeln('El archivo de Libros no se ha encontrado.')
Until (resultado=0);
read (libros,rlibros);
while (Not Eof) do
Begin
If rlibros.autor=aut then
begin
writeln('Codigo: ', rlibros.codigo);
writeln('Titulo: ',rlibros.titulo);
writeln('Autor: ', rlibros.autor);
writeln('Bs: ', rlibros.precio);
writeln('Proveedor: ',rlibros.proveedor);
writeln('Cantidad existente: ',rlibros.stactual);
writeln('Stock M¡nimo: ',rlibros.stmin);
writeln('Stock M ximo: ',rlibros.stmax);
end;{If}
read(libros,rlibros);
end;{while}
readkey;
end;{procedimiento bus_lib}
Procedure Cons_Lib;{Se le solicitan los datos al usuario del libro que desea consultar}
var
titulo1:string[25];
autor1: string[20];
Begin
writeln('A continuaci¢n Ingrese el autor.');
readln(autor1);
Busc_Lib(autor1);
end;{Cons_lib}
Procedure agre_lib;{Se agregan nuevos libros al archivo de libros}
var
Codigo1: string[7];
aux:reglibros;
procedure ag_lib(aux1: reglibros; VAR ARL: ARRELIB; var contl:integer);
begin
arl[contl+1] :=aux1;
contl:=contl+1;
end; {procedure ag_lib}
Begin
Repeat
{$i-}
reset(libros);
resultado:=IOresult;
{SI+}
if resultado<>0 then
writeln('El archivo de Libros no se ha encontrado.')
until (resultado=0);
writeln('Ingrese el c¢digo del libro que desea agregar.');
readln(codigo1);
read(libros, aux);
Logico:=false;
while ((not eof) and (Logico=false)) do
begin
if codigo1=aux.codigo then
logico:=true;
{end If}
read(libros,aux)
end;{while}
close(Libros);
if logico=false then
begin
aux.codigo:=codigo1;
writeln('Proceda a ingresar los datos solicitados del libro que se agregar .');
writeln('Titulo.');
readln( aux.titulo);
writeln('Autor.');
readln(aux.autor);
writeln('Precio.');
readln(aux.precio);
Val(aux.precio, prec,error);
while prec<=0 do
begin
writeln ('Error en precio; debe ser positivo. Intente nuevamente.');
readln(aux.precio)
end;{while validaci¢n}
writeln('Proveedor.');
readln(aux.proveedor);
writeln('Cantidad existente.');
readln(aux.stactual);
Val(aux.stactual,stock,error);
while stock<=0 do
begin
writeln ('Error la cantidad debe ser positiva y distinta de cero. Intente nuevamente.');
readln(aux.stactual);{while validaci¢n}
end;
writeln('Stock Minimo.');
readln(aux.stmin);
Val(aux.stmin,stock,error);
while (stock<=0) do
begin
writeln ('Error la cantidad debe ser positiva y distinta de cero. Intente nuevamente.');
readln(aux.stmin);
end; {while validaci¢n}
writeln('Stock Maximo.');
readln(aux.stmax);
val(aux.stmax,stock,error);
while (stock<=0) do
begin
writeln ('Error la cantidad debe ser positiva y distinta de cero. Intente nuevamente.');
readln(aux.stmax)
end;{while validaci¢n}
llenarlib(arrelibros,contlib);
ag_lib(aux,ARRELIBROS, contlib);
burb_lib(arrelibros,contlib);
inverlib(arrelibros,contlib);
end{If logico=false}
else
writeln('No se Puede agregar libro indicado debido a que ya se encuentra en el inventario.');
end;{Agre_lib}
procedure mod_lib;
var
cod1: string[7];
Resp:char;
begin
writeln('Ingrese el c¢digo del producto.');
readln(cod1);
llenarlib(arrelibros,contlib);
for i:=1 to contlib do
Begin
if arrelibros[i].codigo=cod1 then
begin
resp:= 's';
while (Resp='S') or (Resp='s') do
Begin
writeln('Seleccione el campo que desea modificar.');
writeln('1.-Precio.');
writeln('2.-Proveedor.');
writeln('3.-Stock Minimo.');
writeln('4.-Stock M ximo');
readln(opcion);
while (opcion<1) or (opcion>4) do
Begin
Writeln('Opci¢n invalida. Elija nuevamente.');
readln(opcion);
end;{while validaci¢n}
case opcion of
1:begin
writeln('Ingrese nuevo precio:');
readln(arrelibros[i].precio);
end;
2:begin
writeln('Ingrese nombre del nuevo proveedor:');
readln(arrelibros[i].proveedor);
end;
3:begin
writeln('Ingrese nuevo stock minimo:');
readln(arrelibros[i].stmin);
end;
4:begin
writeln('Ingrese nuevo stock maximo:');
readln(arrelibros[i].stmax);
end;
end; {case opciones}
writeln('¨Desea modificar algun otro dato?S/N');
readln(resp);
while (resp<>'S')or(resp<>'s')or(Resp<>'N')or(Resp<>'n') do
begin
writeln('Opcion invalida,intente nuevamente.S/N');
readln(resp);
end;{while validaci¢n}
end; {while Resp}
end;{if arrelibors[i]=Cod1}
end;{for}
inverlib(arrelibros,contlib);
end;{modificar_libros}
procedure menu_principal;
var
resp:char;
Begin
resp:='s';
While (resp='s') or (resp='S') do
begin
Writeln ('Men£ Principal.');
writeln('1. Archivos');
writeln('2. Facturar');
writeln('3. Salir del sistema');
read(opcion);
while (opcion <1) or (opcion>3) do
Begin
write('Opcion inv lida. Intente nuevamente.');
readln(Opcion);
end;{while validaci¢n}
Case opcion of
1: menuarch;
2: facturar;
3: begin
writeln('Ha finalizado el programa.');
resp:='N';
end;
End;{fin del case}
End;{fin del while Resp}
End;{Procedimiento menu_principal}
Begin{programa principal}
assign(libros,'a:\Archivol.dat');
menu_principal;
end.
...declaraciones
Type
Reglibros = Record
Codigo:string[7];
titulo:string[25];
autor,proveedor:string[20];
Precio:string[9];
stactual, stmax, stmin:string [3];
end;
Archlibros = File of reglibros;
Var
libros:archlibros;
Opcion: integer;
Rlibros:Reglibros;
salir: boolean;
logico:boolean;
ArreLibros: arrelib;
stock,stockm,stockma, cant, contped, contfac, contcli,contlib,i,j,n: integer;
Mayusculas:set of letrasmay;
minusculas:set of letrasmin;
cod1:string[7];
Resultado:integer;
procedure inverlib(arl: arrelib; contl: integer);
var
aux:reglibros;
Begin
repeat
{$i-}
rewrite(libros);
resultado:=IOresult;
{SI+}
if resultado<>0 then
writeln('El archivo de libros no se ha encontrado.')
until (resultado=0);
For j:=1 to contl do
Begin
aux:=arl[j];
write(libros,aux); end; {fin For} close(libros);
end;{fin inverlib}
Procedure llenarLib(var arl: arrelib; var contl: integer);
{Este Procedimiento guarda los registros de cada libro en un Arreglo, antes de ordenarlo}
Begin
repeat
{$i-}
reset(Libros); resultado:=IOresult;
{SI+}
if resultado<>0 then
writeln('El archivo de libros no se ha encontrado.')
until (resultado=0);
read(libros,rlibros);
contl:=0;
while (Not EOf) do
begin
contl:=contl+1;
arl[contl]:=rlibros;
read(Libros, rlibros);
end;{while not eof}
close(libros)
end;{Procedure llenlib}
procedure burb_lib(var ArL: arrelib; contl:integer);
{este procedimiento ordena el arreglo por el metodo de burbuja}
Var
aux: reglibros;
begin
For j:=1 to (contlib-1) do
for n:=1 to (contlib-1) do
If Arl[n].codigo>Arl[n+1].codigo then
Begin
aux:= Arl[n];
ArL[n]:=Arl[n+1];
Arl[n+1]:=aux;
end;{Fin if}
end;{procedure Burbuja_libros}
procedure ordenlib;
begin
llenarlib(arrelibros,contlib);
burb_lib(arrelibros,contlib);
inverlib(arrelibros, contlib);
end;{Ordenar_arreglo_libros}
Procedure busc_lib(aut:string);
begin
repeat
{$i-}
reset(libros);
resultado:=IOresult;
{SI+}
if resultado<>0 then
writeln('El archivo de Libros no se ha encontrado.')
Until (resultado=0);
read (libros,rlibros);
while (Not Eof) do
Begin
If rlibros.autor=aut then
begin
writeln('Codigo: ', rlibros.codigo);
writeln('Titulo: ',rlibros.titulo);
writeln('Autor: ', rlibros.autor);
writeln('Bs: ', rlibros.precio);
writeln('Proveedor: ',rlibros.proveedor);
writeln('Cantidad existente: ',rlibros.stactual);
writeln('Stock M¡nimo: ',rlibros.stmin);
writeln('Stock M ximo: ',rlibros.stmax);
end;{If}
read(libros,rlibros);
end;{while}
readkey;
end;{procedimiento bus_lib}
Procedure Cons_Lib;{Se le solicitan los datos al usuario del libro que desea consultar}
var
titulo1:string[25];
autor1: string[20];
Begin
writeln('A continuaci¢n Ingrese el autor.');
readln(autor1);
Busc_Lib(autor1);
end;{Cons_lib}
Procedure agre_lib;{Se agregan nuevos libros al archivo de libros}
var
Codigo1: string[7];
aux:reglibros;
procedure ag_lib(aux1: reglibros; VAR ARL: ARRELIB; var contl:integer);
begin
arl[contl+1] :=aux1;
contl:=contl+1;
end; {procedure ag_lib}
Begin
Repeat
{$i-}
reset(libros);
resultado:=IOresult;
{SI+}
if resultado<>0 then
writeln('El archivo de Libros no se ha encontrado.')
until (resultado=0);
writeln('Ingrese el c¢digo del libro que desea agregar.');
readln(codigo1);
read(libros, aux);
Logico:=false;
while ((not eof) and (Logico=false)) do
begin
if codigo1=aux.codigo then
logico:=true;
{end If}
read(libros,aux)
end;{while}
close(Libros);
if logico=false then
begin
aux.codigo:=codigo1;
writeln('Proceda a ingresar los datos solicitados del libro que se agregar .');
writeln('Titulo.');
readln( aux.titulo);
writeln('Autor.');
readln(aux.autor);
writeln('Precio.');
readln(aux.precio);
Val(aux.precio, prec,error);
while prec<=0 do
begin
writeln ('Error en precio; debe ser positivo. Intente nuevamente.');
readln(aux.precio)
end;{while validaci¢n}
writeln('Proveedor.');
readln(aux.proveedor);
writeln('Cantidad existente.');
readln(aux.stactual);
Val(aux.stactual,stock,error);
while stock<=0 do
begin
writeln ('Error la cantidad debe ser positiva y distinta de cero. Intente nuevamente.');
readln(aux.stactual);{while validaci¢n}
end;
writeln('Stock Minimo.');
readln(aux.stmin);
Val(aux.stmin,stock,error);
while (stock<=0) do
begin
writeln ('Error la cantidad debe ser positiva y distinta de cero. Intente nuevamente.');
readln(aux.stmin);
end; {while validaci¢n}
writeln('Stock Maximo.');
readln(aux.stmax);
val(aux.stmax,stock,error);
while (stock<=0) do
begin
writeln ('Error la cantidad debe ser positiva y distinta de cero. Intente nuevamente.');
readln(aux.stmax)
end;{while validaci¢n}
llenarlib(arrelibros,contlib);
ag_lib(aux,ARRELIBROS, contlib);
burb_lib(arrelibros,contlib);
inverlib(arrelibros,contlib);
end{If logico=false}
else
writeln('No se Puede agregar libro indicado debido a que ya se encuentra en el inventario.');
end;{Agre_lib}
procedure mod_lib;
var
cod1: string[7];
Resp:char;
begin
writeln('Ingrese el c¢digo del producto.');
readln(cod1);
llenarlib(arrelibros,contlib);
for i:=1 to contlib do
Begin
if arrelibros[i].codigo=cod1 then
begin
resp:= 's';
while (Resp='S') or (Resp='s') do
Begin
writeln('Seleccione el campo que desea modificar.');
writeln('1.-Precio.');
writeln('2.-Proveedor.');
writeln('3.-Stock Minimo.');
writeln('4.-Stock M ximo');
readln(opcion);
while (opcion<1) or (opcion>4) do
Begin
Writeln('Opci¢n invalida. Elija nuevamente.');
readln(opcion);
end;{while validaci¢n}
case opcion of
1:begin
writeln('Ingrese nuevo precio:');
readln(arrelibros[i].precio);
end;
2:begin
writeln('Ingrese nombre del nuevo proveedor:');
readln(arrelibros[i].proveedor);
end;
3:begin
writeln('Ingrese nuevo stock minimo:');
readln(arrelibros[i].stmin);
end;
4:begin
writeln('Ingrese nuevo stock maximo:');
readln(arrelibros[i].stmax);
end;
end; {case opciones}
writeln('¨Desea modificar algun otro dato?S/N');
readln(resp);
while (resp<>'S')or(resp<>'s')or(Resp<>'N')or(Resp<>'n') do
begin
writeln('Opcion invalida,intente nuevamente.S/N');
readln(resp);
end;{while validaci¢n}
end; {while Resp}
end;{if arrelibors[i]=Cod1}
end;{for}
inverlib(arrelibros,contlib);
end;{modificar_libros}
procedure menu_principal;
var
resp:char;
Begin
resp:='s';
While (resp='s') or (resp='S') do
begin
Writeln ('Men£ Principal.');
writeln('1. Archivos');
writeln('2. Facturar');
writeln('3. Salir del sistema');
read(opcion);
while (opcion <1) or (opcion>3) do
Begin
write('Opcion inv lida. Intente nuevamente.');
readln(Opcion);
end;{while validaci¢n}
Case opcion of
1: menuarch;
2: facturar;
3: begin
writeln('Ha finalizado el programa.');
resp:='N';
end;
End;{fin del case}
End;{fin del while Resp}
End;{Procedimiento menu_principal}
Begin{programa principal}
assign(libros,'a:\Archivol.dat');
menu_principal;
end.
Valora esta pregunta


0