Programación General > Pascal
Error 160
Mapi:
Estaba haciendo una parte de un programa que me habian tomado en mi laboratorio de ayer. Cuando la compile todo normal, pero luego cuando la ejecute me salio error 160 : Device write fault. Alguien sabe que significa, aqui pongo parte de mi codigo por seaca:
Program Lab1;
var
archDat:text; archaux:text;
numcamp,i,long,dato,NumDat:byte; tip:char;
begin
assign(archdat,'datos.txt');
assign(archaux,'aux.txt');
rewrite(archdat); rewrite(archaux);
write('Ingrese el numero de campos :');
readln(NumCamp);
If numcamp>0 then
begin
writeln(archdat,numcamp);
for i:=1 to NumCamp do
begin
writeln('Ingrese el tipo de dato ,i,: ');
readln(tip);
If Upcase(tip)=upcase('C') then
begin
write('Ingrese el tamano de la cadena: ');
readln(long);
writeln(archdat,ord(upcase('C')));
writeln(archdat,long);
end;
If upcase(tip)=upcase('I') then
begin
write('Ingrese el numero de bits :');
readln(long);
writeln(archdat,ord(upcase('I')));
writeln(archdat,long);
end;
end;
end
else
writeln('El numero de campos tiene que ser menor que cero');
writeln('Ingrese el numero de datos');
readln(NumDat);
writeln('Empiece a ingresar los datos');
for i:=1 to numDat do
begin
readln(Dato);
writeln(archaux,Dato); { CUANDO SE EJECUTA ESTA INSTRUCCION SALE EL ERROR}
end;
close(archdat); close(archaux);
end.
Enko:
Seria bueno que digas que es lo que tiene que hacer tu programa.
Como no se que tiene que hacer, tal vez, el error este en otra parte.
Tambien, en lo posible, cuendo lo pegues hacelo usando el boton Code que esta arriba del editor o poner el codigo entre [ CODE ] codigo tuyo [/ CODE ] sin los espacios entre [ y CODE.
--- Código: Text --- var archDat:text; archAux:text; numCamp,i,long,Dato,NumDat:byte; Tip:char; begin Assign(archdat,'datos.txt'); Assign(archaux,'aux.txt'); reWrite(archdat); reWrite(archaux); Write('Ingrese el numero de campos :'); ReadLn(NumCamp); if numcamp>0 then begin WriteLn(archdat,numcamp); for i:=1 to NumCamp do begin WriteLn('Ingrese el tipo de dato ,i,: '); ReadLn(tip); if UpCase(tip)=upcase('C') then begin Write('Ingrese el tamano de la cadena: '); ReadLn(long); WriteLn(archdat,ord(upcase('C'))); WriteLn(archdat,long); end else if UpCase(tip)=upcase('I') then begin Write('Ingrese el numero de bits :'); ReadLn(long); WriteLn(archdat,ord(upcase('I'))); WriteLn(archdat,long); end; end; end else WriteLn('El numero de campos tiene que ser menor que cero'); WriteLn('Ingrese el numero de datos'); ReadLn(NumDat); WriteLn('Empiece a ingresar los datos'); for i:=1 to numDat do begin ReadLn(Dato); WriteLn(archaux,Dato); end;Close(archdat);Close(archaux);end.
Mapi:
Es un poco dificil de explicar si no mas cuando me dieron la hoja en el laboratorio me demore como media hora en entenderlo. Se supone que es un programa que descomprension, pero la parte que yo estoy haciendo es el de la obtencion de datos.
Lo voy a intentar con un ejemplo:
Lo que me tiene que salir en archdat es:
2 {El numero de campos que yo ingrese}
67 {codigo asscii de la letra C, en caso de que tip sea C}
3 {numero de bits que se utilizaran para la cadena}
73 {codigo asscii de la letra I, en caso de que tip sea I}
7 {el numero de bits que va a ocupar el numero}
en el archivo auxiliar lo que me tiene que salir son los datos que yo ingrese:
156
200
75
{todos tienen que ser de tipo byte}
Esa es la parte que muestro en el codigo que tengo y que no se ejecuta bien, solo quiero que los datos salgan en los archivos de texto pero al ingresar los datos en el auxiliar me sale el error que mencione antes. Error 160:Device write Default.
No creo que importe pero lo que tengo que hace despues es (lo voy a explicar con el ejemplo):
- El primer valor de tip es C y el numero de bits a utilizar es 3, de los 8 bits que tiene el numero 156 agarro 3 y agregandole 5 ceros a la derecha formo un caracter.
- El segundo valor de tip es I, y 7 es el numero que es el numero de bits que voy a agarrar de los datos, entonces tomaba 5 bits que me sobraban del 156 y agarraba otros dos bits del 200 y los ponia a la izquierda y luego le agragaba un cero a la izquierda formando un numero.
Enko:
El codigo tuyo que reescribi yo esta bien, lo que pasa, es que por alguna inexplicable razon el archivo aux.txt no se crea (por lo menos en Delphi no) por lo que le cambie el nombre y todo anduvo.
--- Código: Text --- Assign(archaux,'auxdatos.txt'); Es todo lo que tuve que cambiar. Eso espero :ph34r:
PD: Me parecio raro que el archivo aux.txt no se creara y me termine dandome cuenta de esto.....Visita este post de Dudas sobre Informatica
Mapi:
Gracias, tenias razon no me dejaba crear el aux.txt pero con otro nombre si se puede.
Navegación
[#] Página Siguiente
Ir a la versión completa