Programación General > Pascal

 Error 160

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa