SoloCodigo

Programación General => Pascal => Mensaje iniciado por: Mapi en Miércoles 6 de Abril de 2005, 19:18

Título: Error 160
Publicado por: Mapi en Miércoles 6 de Abril de 2005, 19:18
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.
Título: Re: Error 160
Publicado por: Enko en Jueves 7 de Abril de 2005, 00:15
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
  1.  
  2. var
  3.   archDat:text;
  4.   archAux:text;
  5.   numCamp,i,long,Dato,NumDat:byte;
  6.   Tip:char;
  7.  
  8. begin
  9.   Assign(archdat,'datos.txt');
  10.   Assign(archaux,'aux.txt');
  11.   reWrite(archdat);
  12.   reWrite(archaux);
  13.   Write('Ingrese el numero de campos :');
  14.   ReadLn(NumCamp);
  15.   if numcamp>0 then
  16.   begin
  17.     WriteLn(archdat,numcamp);
  18.     for i:=1 to NumCamp do
  19.     begin
  20.       WriteLn('Ingrese el tipo de dato ,i,: ');
  21.       ReadLn(tip);
  22.       if UpCase(tip)=upcase('C') then
  23.       begin
  24.         Write('Ingrese el tamano de la cadena: ');
  25.         ReadLn(long);
  26.         WriteLn(archdat,ord(upcase('C')));
  27.         WriteLn(archdat,long);
  28.       end else
  29.       if UpCase(tip)=upcase('I') then
  30.       begin
  31.       Write('Ingrese el numero de bits :');
  32.       ReadLn(long);
  33.       WriteLn(archdat,ord(upcase('I')));
  34.       WriteLn(archdat,long);
  35.       end;
  36.     end;
  37.   end else WriteLn('El numero de campos tiene que ser menor que cero');
  38.   WriteLn('Ingrese el numero de datos');
  39.   ReadLn(NumDat);
  40.   WriteLn('Empiece a ingresar los datos');
  41.   for i:=1 to numDat do
  42.   begin
  43.     ReadLn(Dato);
  44.     WriteLn(archaux,Dato);
  45.   end;
  46. Close(archdat);
  47. Close(archaux);
  48. end.
  49.  
  50.  
Título: Re: Error 160
Publicado por: Mapi en Jueves 7 de Abril de 2005, 05:36
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.
Título: Re: Error 160
Publicado por: Enko en Jueves 7 de Abril de 2005, 15:56
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
  1.  
  2. Assign(archaux,'auxdatos.txt');
  3.  
  4.  
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 (http://foros.solocodigo.com/index.php?act=ST&f=4&t=14499&st=0#entry47382)
Título: Re: Error 160
Publicado por: Mapi en Jueves 7 de Abril de 2005, 22:42
Gracias, tenias razon no me dejaba crear el aux.txt pero con otro nombre si se puede.
Título: Re: Error 160
Publicado por: Enko en Jueves 7 de Abril de 2005, 22:48
Si, medio raro eso..... :alien:
Supongo que debe ser una especie de palabra reservada para el Win y DOS. El turbo pascal, al tratar de abrir algun archivo llamado aux.txt me dice que es un dispositivo :alien: