[ Foro de Pascal ]

Ayuda para mostrar una lista extensa.

26-Jan-2012 19:07
Lucas Matias Guardn
13 Respuestas

Estimado/s; necesito ayuda con una porcion de programa que me hace algo raro...lo que hace el programa es llevar un control de los materiales que se entregan, para los operarios, en una fabrica...y tiene una opcion de visualizar la lista, pero esta al ser muy extensa se me ocurrio mostrarla de apoco, cada 15 lineas, las primeras 15 me las muestra bien, sin problemas, las segunda tambien, pero despues de mostrarla, cuando tiene que poner que "precione ENTER para seguir mostrando, ya no lo ubica en el centro de la pantalla,y las lineas siguientes me aparecen desordenadas, me pueden decir porque?¡....
les dejo el codigo, estoy usando Free Pascal...



Procedure Visualiza();
 Var
  f,c,i,pos,n:integer;
 Begin
  assign(list,'C:\LISTA\Lista.dat');
  ClrScr; NILSO();
  reset(list);
  Gotoxy(1,14); TextColor(14);
  writeln('FECHA      MATERIAL                            CANT  DESTINO     NOMBRE Y APELLIDO');
  f:=15; c:=1;
  n:=filesize(list);{Es pasa identificar cuantas lineas tiene la lista y asi usar ese numero en la iteracion de abajo}
  pos:=0;
  for i:= 1 to n do
   begin
    seek(list,pos); read(list,M);
    Gotoxy(c,f); TextColor(7);
    writeln(M.fecha,' ',M.mate);
    Gotoxy(48,f); TextColor(7);
    writeln(M.canti:4:1,'   ',M.trab,M.nom:10,' ',M.ape);
    pos:=pos+1;
    f:=f+1;
    if (i mod 15=0) then {Evaluo si llegue a los 15 para que corte, con enter me muestra 15 mas}
     begin
      Gotoxy(25,f+1); TextColor(2);
      write('Precione ENTER para seguir mostrando');
      readln();
      Gotoxy(25,f); DelLine;
     end
   end;
  Close(list);
  f:=f+3;
  Gotoxy(25,f); TextColor(12);
  writeln('Precione una tecla para continuar');
  readln();
  ClrScr;
 end;

ACA LES DEJO EL PROGRAMA COMPLETO POR LAS DUDAS Y ADJUNTO EL Lista.dat POR SI LOS NECESITAN...

Program Panol (input,output);
Uses CRT;
Type
 material=Record
           mate:string[35];
           trab:string[10];
           nom,ape:string[30];
           fecha:string[10];
           canti:real;
          end;

 archivo=file of material;

Var
 list:archivo;
 M:material;
 res:char;
 op:integer;
 f:string[10];

Procedure NILSO();
 Begin
  gotoxy(33,1); TextColor(8); write('~~~~~~~~~~~~~~~~~~~~');
  gotoxy(33,2); TextColor(8); write('~');
  gotoxy(33,3); TextColor(8); write('~');
  gotoxy(33,4); TextColor(8); write('~');
  gotoxy(33,5); TextColor(8); write('~');
  gotoxy(33,5); TextColor(8); write('~~~~~~~~~~~~~~~~~~~~');
  gotoxy(52,2); TextColor(8); write('~');
  gotoxy(52,3); TextColor(8); write('~');
  gotoxy(52,4); TextColor(8); write('~');
  gotoxy(52,5); TextColor(8); write('~');
  gotoxy(35,3); TextColor(9);
  Writeln('NILSO TORRE S.A.');
  gotoxy(29,7); TextColor(10); write('+++++++++++++++++++++++++++');
  gotoxy(29,9); TextColor(10); write('+++++++++++++++++++++++++++');
  gotoxy(29,8); TextColor(10); write('+');
  gotoxy(55,8); TextColor(10); write('+');
  gotoxy(30,8); TextColor(13); writeln('SALIDA MATERIAL DE PA¥OL');
 End;

Procedure Visualiza();
 Var
  f,c,i,pos,n:integer;
 Begin
  assign(list,'C:\LISTA\Lista.dat');
  ClrScr; NILSO();
  reset(list);
  Gotoxy(1,14); TextColor(14);
  writeln('FECHA      MATERIAL                            CANT  DESTINO     NOMBRE Y APELLIDO');
  f:=15; c:=1;
  n:=filesize(list);
  pos:=0;
  for i:= 1 to n do
   begin
    seek(list,pos); read(list,M);
    Gotoxy(c,f); TextColor(7);
    writeln(M.fecha,' ',M.mate);
    Gotoxy(48,f); TextColor(7);
    writeln(M.canti:4:1,'   ',M.trab,M.nom:10,' ',M.ape);
    pos:=pos+1;
    f:=f+1;
    if (i mod 15=0) then
     begin
      Gotoxy(25,f+1); TextColor(2);
      write('Precione ENTER para seguir mostrando');
      readln();
      Gotoxy(25,f); DelLine;
     end
   end;
  Close(list);
  f:=f+3;
  Gotoxy(25,f); TextColor(12);
  writeln('Precione una tecla para continuar');
  readln();
  ClrScr;
 end;

Procedure Carga (Var list:archivo; Var M:material; Var f:string);
 Var
  c,pos:integer;
  rta:char;
 Begin
  assign(list,'C:\LISTA\Lista.dat');
  ClrScr; NILSO();
  reset(list); c:=filesize(list);
  if c=0 then
   begin
    rta:='s';
    while (rta='s') or (rta='S') do
     begin
      ClrScr; NILSO();
      M.fecha:=f;
      Gotoxy(4,12); TextColor(1);
      write('_Material a entregar: '); TextColor(7); readln(M.mate);
      Gotoxy(4,14); TextColor(1);
      write('_Cantidad: '); TextColor(7); readln(M.canti);
      Gotoxy(4,16); TextColor(1);
      write('_Destino: '); TextColor(7); readln(M.trab);
      Gotoxy(4,18); TextColor(1);
      write('_Nombre: '); TextColor(7); readln(M.nom);
      Gotoxy(4,20); TextColor(1);
      write('_Apellido: '); TextColor(7); readln(M.ape);
      write(list,M);
      ClrScr; NILSO();
      writeln('Desea continuar con la entrega de Materiales?');
      readln(rta);
      ClrScr;
     end;
    Close(list);
    ClrScr; NILSO();
   end
   else
    begin
     reset(list); seek(list,c);
     rta:='s';
     while (rta='s') or (rta='S') do
      begin
       ClrScr; NILSO();
       M.fecha:=f;
       Gotoxy(4,12); TextColor(1);
       write('_Material a entregar: '); TextColor(7); readln(M.mate);
       Gotoxy(4,14); TextColor(1);
       write('_Cantidad: '); TextColor(7); readln(M.canti);
       Gotoxy(4,16); TextColor(1);
       write('_Destino: '); TextColor(7); readln(M.trab);
       Gotoxy(4,18); TextColor(1);
       write('_Nombre: '); TextColor(7); readln(M.nom);
       Gotoxy(4,20); TextColor(1);
       write('_Apellido: '); TextColor(7); readln(M.ape);
       write(list,M);
       ClrScr; NILSO();
       writeln('Desea continuar con la entrega de Materiales?');
       readln(rta);
       ClrScr;
      end;
     Close(list);
   end;
   ClrScr; NILSO();
   Gotoxy(20,12); TextColor(12);
   writeln('Precione una tecla p/ volver al menu principal');
   readln();
   ClrScr;
 end;

BEGIN
 ClrScr; NILSO();
 assign(list,'C:\LISTA\Lista.dat');
 Gotoxy(3,12); TextColor(4);
 write('-----------------');
 Gotoxy(3,11); TextColor(1);
 write('Ingrese la fecha: '); TextColor(7); readln(f);
 ClrScr; NILSO();
 Gotoxy(25,23); TextColor(7);
 write('Para salir del Programa precione ESC');
 res:=readkey;
 ClrScr; NILSO();
 while res<>#27 do
  begin
   ClrScr; NILSO();
   Gotoxy(4,13); TextColor(3);
   write('*****************');
   Gotoxy(4,12); TextColor(1);
   writeln('Elija una opcion: ');
   Gotoxy(20,17);
   writeln('1_Visualizar Lista          2_Entrega de Material');
   readln(op);
   ClrScr; NILSO();
   if op=1 then
    begin
     Visualiza();
    end
   else
    if op=2 then
     begin
      Carga(list,M,f);
     end;
   ClrScr; NILSO();
   Gotoxy(25,23); TextColor(7);
   write('Pasa salir del Programa precione ESC');
   res:=readkey;
   end;
  Close(list);
END.




28-Jan-2012 05:19
Luis Torres (+12)

En el programa falta la parte de arriba:
Program NombreDelPrograma;
Uses UnidadesAUsar;
Así como está, no compila.
Saludos.


28-Jan-2012 12:35
Lucas Matias Guardn

Si, lo se, me debo haber olvidado de ponerlo, pero el programa esta funcionando ok, salvo por los comentarios que puse anteriormente...Mustra bien 15 elementos de la lista, me sale el cartel centrado en la pantalla como yo lo programa diciendome que precione ENTER para seguir mostrando, lo preciono, muestra bien los otros 15, pero el cartel de precionar ENTER no me sale centrado como el anterior, y cuando precione enter los elementos que siguen salen desordenados, porque puede ser?¡....Alguien que me de una mano por favor¡¡¡¡ Gracias.


28-Jan-2012 21:50
Luis Torres (+12)

Pero pon la parte que falta del programa, para que pueda compilarlo y correrlo y, así ver con mis propios ojos lo que sucede. Recuerda que yo no manejo muy bien el Free Pascal, así que no conozco mucho sobre sus unidades. Por favor, coloca la parte que falta, así como está en el primer post no compila. Saludos.


28-Jan-2012 22:01
Luis Torres (+12)

Disculpa, fue un error mío copiar sin leer antes. Ya noté que el programa está más abajo. Lo copié todo y así no compila. Saludos.


28-Jan-2012 22:04
Luis Torres (+12)

¿Cómo debe ser la fecha a ingresar?. Escribe un ejemplo de fecha. Saludos.


28-Jan-2012 22:38
Antonio P.G.

Hola,

Yo en la fecha he probado "28-01-2012" y ha funcionado.

Ciao.


28-Jan-2012 22:50
Antonio P.G.

Hola, Lucas.


Supongo que Luis también coincidirá conmigo en que el programa es un poco "alocado". Mis comentarios son los siguientes:

- Para arreglar tu problema, se pueden hacer dos cosas: borrar una tanda de líneas y poner otra tanda, o bien, ir poniendo líneas tanda tras tanda, de manera acumulativa. Dinos cuál es tu idea con respecto a eso (a mí particularmente me gusta más la primera, porque puedes incluso añadirle funciones para pasar de una tanda a otra, en plan "por bloques").

- Me parece que sobra la pantalla en la que se dice únicamente lo de "PULSA ESC PARA SALIR". Mejor no poner nada, y pasar al menú (en el que se podría indicar la opción de ESC), o indicar en la pantalla que ya tienes algo como "PULSAR CUALQUIER TECLA PARA ENTRAR".


Ya nos dirás. Un saludo.


29-Jan-2012 00:31
Luis Torres (+12)

Los problemas surgen al tener textos cuya longitud excede el espacio destinado para ellos, entonces, el resto sobrante pasa a la siguiente línea y todo se descuadra a partir de allí. Cada campo del registro debe tener una longitud máxima y debes cuidar que la suma de las longitudes máximas no excedan el ancho de la pantalla (80 columnas). Eso debes cuidarlo al diseñar el programa y, debes tener en cuenta ese ancho permitido a la hora de ingresar los datos: si introduces un dato muy largo, el resultado es que tendrás una visualización de datos descuadrados. Ese creo que es el problema que tienes. Saludos.


29-Jan-2012 01:11
Lucas Matias Guardn

Gracias a todos los que opinaron y me dieron una idea de como hacerlo, cuide que el ancho no se me excediera y lo que hice fue mostar los primeros 15 elementos, borro la pantalla y en el mismo lugar muestro los 15 siguientes y asi sucesibamente....y queda muy bien y muy estetico....lo que me gustaria consultarles ahora es lo siguiente....quiero realizar una busqueda,ya se por fecha o por apellido...le agregue al programa lo siguiente....


Procedure Busca();
 Var
  fecha:string[10];
  ape:string[30];
  op,f,c:integer;
 Begin
  assign(list,'C:\LISTA\Lista.dat');
  ClrScr; NILSO();
  reset(list);
  Gotoxy(4,12); TextColor(1);
  writeln('Elija el parametro para realizar la busqueda: ');
  Gotoxy(20,14);
  writeln('1_Por Fecha         2_Por Apellido');
  readln(op);
  if op=1 then
   begin
    ClrScr; NILSO();
    Gotoxy(4,12); TextColor(1);
    write('_Ingrese la Fecha: '); TextColor(12); readln(fecha);
    ClrScr; NILSO();
    Gotoxy(1,14); TextColor(14);
    writeln('FECHA      MATERIAL                            CANT  DESTINO     NOMBRE Y APELLIDO');
    f:=15; c:=1;
    read(list,M);
    while fecha=M.fecha do
     begin
      reset(list);
      Gotoxy(c,f); TextColor(7);
      read(list,M);
      writeln(M.fecha,' ',M.mate);
      Gotoxy(48,f); TextColor(7);
      writeln(M.canti:4:1,'   ',M.trab,M.nom:10,' ',M.ape);
      f:=f+1;
     end;
    Close(list);
    readln();
   end
  else
   if op=2 then
    begin
     ClrScr; NILSO();
     Gotoxy(4,12); TextColor(1);
     write('_Ingrese la Apellido: '); TextColor(12); readln(ape);
     ClrScr; NILSO();
     Gotoxy(1,14); TextColor(14);
     writeln('FECHA      MATERIAL                            CANT  DESTINO     NOMBRE Y APELLIDO');
     f:=15; c:=1;
     read(list,M);
     while ape=M.ape do
      begin
       read(list,M);
       Gotoxy(c,f); TextColor(7);
       writeln(M.fecha,' ',M.mate);
       Gotoxy(48,f); TextColor(7);
       writeln(M.canti:4:1,'   ',M.trab,M.nom:10,' ',M.ape);
       f:=f+1;
      end;
     Close(list);
     readln();
    end;
 end;

Cuando realizo la busqueda por apellido no me muestra nada directamente y cuando la hago por fecha me muesta 3 elementos y nada mas y siempre me muestra los mismo....alguna idea de como realizar la busqueda?¡ Gracias....


29-Jan-2012 04:39
Luis Torres (+12)

No te muestra nada simplemente porque no estás realizando ninguna búsqueda. Para realizar una búsqueda de, por ejemplo, apellido, lo podrías hacer más o menos así:
while not eof(list) do
begin
  read(list,M);
  if M.ape = ape then
    begin
      writeln('Fecha Material Cant Destino Nombre y Apellido');
      writeln(M.cant,' ',M.trab,' ',M.nom,' ',M.ape);
    end;
end;

Y, claro está, debes colocar parte de ese código dentro de del código que te permita mostrar los resultados de 15 en 15.
Creo que así está bien. De todas maneras el profesor podrá revisarlo con detenimiento para ver si está bien, yo lo hice muy rápido. Saludos.  


29-Jan-2012 10:54
Nacho Cabanes (+30)

Efectivamente, la versión de Lucas no busca nada: solo lee una primera ficha pero no avanza la posición en el fichero.

Además, es tremendamente repetitiva: si dos fragmentos de programa tienen 23 líneas casi idénticas, suena a que se podrían haber juntado en un único fragmento, y que el "if" que los distingue estuviera dentro.

Lucas, insisto en lo que ya te dije: comienza por un fragmento pequeño que funcione y luego mejóralo, en vez de ampliar cada vez más un fragmento que no va bien y que acaba siendo inmanejable.


29-Jan-2012 19:01
Luis Torres (+12)

Estoy de acuerdo con el profesor Nacho Cabanes, es mejor empezar con algo sencillo, corto, para luego ir a más. Es más fácil ver los errores cuando se tiene lo indispensable para que el programa haga lo que nosotros queremos que haga. Me gustaría que colocaras el programa con la parte de visualización ya corregida por tí, quiero ver como corre y así empaparme más sobre el programa. Saludos.


31-Jan-2012 15:55
Lucas Matias Guardn

Estimado, le subo el programa funcionando ok, se ve de 10, pero me surgio otro inconveniente, en el procedimiento de busqueda, como hago para mostrar las lista igual que en el procedimiento de Visualizacion?¡
subo el archivo y el programa....gracias....


Program Panol (input,output);
Uses CRT;
Type
 material=Record
           mate:string[35];
           trab:string[10];
           nom,ape:string[30];
           fecha:string[10];
           canti:real;
          end;

 archivo=file of material;

Var
 list:archivo;
 M:material;
 res:char;
 op:integer;
 f:string[10];

Procedure NILSO;
 Begin
  gotoxy(33,1); TextColor(8); write('~~~~~~~~~~~~~~~~~~~~');
  gotoxy(33,2); TextColor(8); write('~');
  gotoxy(33,3); TextColor(8); write('~');
  gotoxy(33,4); TextColor(8); write('~');
  gotoxy(33,5); TextColor(8); write('~');
  gotoxy(33,5); TextColor(8); write('~~~~~~~~~~~~~~~~~~~~');
  gotoxy(52,2); TextColor(8); write('~');
  gotoxy(52,3); TextColor(8); write('~');
  gotoxy(52,4); TextColor(8); write('~');
  gotoxy(52,5); TextColor(8); write('~');
  gotoxy(35,3); TextColor(9);
  Writeln('NILSO TORRE S.A.');
  gotoxy(29,7); TextColor(10); write('+++++++++++++++++++++++++++');
  gotoxy(29,9); TextColor(10); write('+++++++++++++++++++++++++++');
  gotoxy(29,8); TextColor(10); write('+');
  gotoxy(55,8); TextColor(10); write('+');
  gotoxy(30,8); TextColor(13); writeln('SALIDA MATERIAL DE PA¥OL');
 End;

Procedure Visualiza;
 Var
  fi,c,i,pos,n:integer;
 Begin
  assign(list,'\\Server\datos\NilsoTorre\Lista.dat');
  fi:=0;
  ClrScr; NILSO;
  reset(list);
  n:=filesize(list);
  pos:=0;
  fi:=15; c:=1;
  for i:= 1 to n do
   begin
    Gotoxy(1,14); TextColor(14);
    writeln('FECHA      MATERIAL                        CANT  DESTINO     NOMBRE Y APELLIDO');
    seek(list,pos); read(list,M);
    Gotoxy(c,fi); TextColor(7);
    writeln(M.fecha,' ',M.mate);
    Gotoxy(44,fi); TextColor(7);
    writeln(M.canti:4:1,'   ',M.trab,M.nom:10,' ',M.ape);
    pos:=pos+1;
    fi:=fi+1;
    if (i mod 15=0) then
     begin
      Gotoxy(25,fi); TextColor(2);
      write('Precione ENTER para seguir mostrando');
      readln;
      ClrScr; NILSO;
      fi:=15; c:=1;
     end
   end;
  Close(list);
  fi:=fi+2;
  Gotoxy(25,fi); TextColor(12);
  writeln('Precione una tecla para continuar');
  readln;
  ClrScr;
 end;

Procedure Carga (Var list:archivo; Var M:material; f:string);
 Var
  c,pos:integer;
  rta:char;
 Begin
  assign(list,'\\Server\datos\NilsoTorre\Lista.dat');
  ClrScr; NILSO;
  reset(list); c:=filesize(list);
  if c=0 then
   begin
    rta:='s';
    while (rta='s') or (rta='S') do
     begin
      ClrScr; NILSO;
      M.fecha:=f;
      Gotoxy(4,12); TextColor(1);
      write('_Material a entregar: '); TextColor(7); readln(M.mate);
      Gotoxy(4,14); TextColor(1);
      write('_Cantidad: '); TextColor(7); readln(M.canti);
      Gotoxy(4,16); TextColor(1);
      write('_Destino: '); TextColor(7); readln(M.trab);
      Gotoxy(4,18); TextColor(1);
      write('_Nombre: '); TextColor(7); readln(M.nom);
      Gotoxy(4,20); TextColor(1);
      write('_Apellido: '); TextColor(7); readln(M.ape);
      write(list,M);
      ClrScr; NILSO;
      Gotoxy(20,14); TextColor(4);
      writeln('Desea continuar con la entrega de Materiales?');
      readln(rta);
      ClrScr;
     end;
    Close(list);
    ClrScr; NILSO;
   end
   else
    begin
     reset(list); seek(list,c);
     rta:='s';
     while (rta='s') or (rta='S') do
      begin
       ClrScr; NILSO;
       M.fecha:=f;
       Gotoxy(4,12); TextColor(1);
       write('_Material a entregar: '); TextColor(7); readln(M.mate);
       Gotoxy(4,14); TextColor(1);
       write('_Cantidad: '); TextColor(7); readln(M.canti);
       Gotoxy(4,16); TextColor(1);
       write('_Destino: '); TextColor(7); readln(M.trab);
       Gotoxy(4,18); TextColor(1);
       write('_Nombre: '); TextColor(7); readln(M.nom);
       Gotoxy(4,20); TextColor(1);
       write('_Apellido: '); TextColor(7); readln(M.ape);
       write(list,M);
       ClrScr; NILSO;
       Gotoxy(20,14); TextColor(4);
       writeln('Desea continuar con la entrega de Materiales?');
       readln(rta);
       ClrScr;
      end;
     Close(list);
   end;
   ClrScr; NILSO;
   Gotoxy(20,12); TextColor(12);
   writeln('Precione una tecla p/ volver al menu principal');
   readln;
   ClrScr;
 end;

Procedure Busca;
 Var
  fecha:string[10];
  ape:string[30];
  op,f,c:integer;
 Begin
  assign(list,'\\Server\datos\NilsoTorre\Lista.dat');
  ClrScr; NILSO;
  reset(list);
  Gotoxy(4,12); TextColor(1);
  writeln('Elija el parametro para realizar la busqueda: ');
  Gotoxy(20,14);
  writeln('1_Por Fecha         2_Por Apellido');
  readln(op);
  if op=1 then
   begin
    ClrScr; NILSO;
    Gotoxy(4,12); TextColor(1);
    write('_Ingrese la Fecha: '); TextColor(12); readln(fecha);
    ClrScr; NILSO;
    Gotoxy(1,14); TextColor(14);
    writeln('FECHA      MATERIAL                        CANT  DESTINO     NOMBRE Y APELLIDO');
    f:=15; c:=1;
    while not eof(list) do
     begin
      read(list,M);
      if fecha=M.fecha then
       begin
        Gotoxy(c,f); TextColor(7);
        writeln(M.fecha,' ',M.mate);
        Gotoxy(44,f); TextColor(7);
        writeln(M.canti:4:1,'   ',M.trab,M.nom:10,' ',M.ape);
        f:=f+1;
       end;
     end;
    Close(list);
    readln;
   end
  else
   if op=2 then
    begin
     ClrScr; NILSO;
     Gotoxy(4,12); TextColor(1);
     write('_Ingrese la Apellido: '); TextColor(12); readln(ape);
     ClrScr; NILSO;
     Gotoxy(1,14); TextColor(14);
     writeln('FECHA      MATERIAL                        CANT  DESTINO     NOMBRE Y APELLIDO');
     f:=15; c:=1;
     while not eof(list) do
      begin
       read(list,M);
       if M.ape=ape then
        begin
         Gotoxy(c,f); TextColor(7);
         writeln(M.fecha,' ',M.mate);
         Gotoxy(44,f); TextColor(7);
         writeln(M.canti:4:1,'   ',M.trab,M.nom:10,' ',M.ape);
         f:=f+1;
        end;
      end;
     Close(list);
     readln;
    end;
 end;



BEGIN
 ClrScr; NILSO;
 assign(list,'\\Server\datos\NilsoTorre\Lista.dat');
 Gotoxy(3,12); TextColor(4);
 write('-----------------');
 Gotoxy(3,11); TextColor(1);
 write('Ingrese la fecha: '); TextColor(7); readln(f);
 ClrScr; NILSO;
 Gotoxy(25,23); TextColor(7);
 write('Para salir del Programa precione ESC');
 res:=readkey;
 ClrScr; NILSO;
 while res<>#27 do
  begin
   ClrScr; NILSO;
   Gotoxy(4,13); TextColor(3);
   write('*****************');
   Gotoxy(4,12); TextColor(1);
   writeln('Elija una opcion: ');
   Gotoxy(20,17);
   writeln('1_Visualizar Lista          2_Entrega de Material');
   Gotoxy(38,19);
   writeln('3_Busqueda');
   readln(op);
   ClrScr; NILSO;
   if op=1 then
    begin
     Visualiza;
    end
   else
    if op=2 then
     begin
      Carga(list,M,f);
     end
    else
     if op=3 then
      begin
       Busca;
      end;
   ClrScr; NILSO;
   Gotoxy(25,23); TextColor(7);
   write('Pasa salir del Programa precione ESC');
   res:=readkey;
   end;
  Close(list);
END.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)