Pascal/Turbo Pascal - como mostrar por pantalla de a poco y no todo de una en un corte de control

 
Vista:
sin imagen de perfil

como mostrar por pantalla de a poco y no todo de una en un corte de control

Publicado por Juan (8 intervenciones) el 04/11/2016 02:52:24
Buenas!! Tengo que mostrar datos a traves de un corte de control pero quiero que me lo muestre de a poco (o sea, cada 20 lineas que la muestra de datos pare y el usuario elija si seguir viendo o no, pero que se siga ejecutando el corte). Puse 20 lineas porque creo que ese es el tope de lo que puede mostrar pascal

Si me pueden ayudar les agradeceria
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

como mostrar por pantalla de a poco y no todo de una en un corte de control

Publicado por ramon (2158 intervenciones) el 04/11/2016 16:12:46
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
{Mira esto}
 
 program control;
   uses
      crt;
 
   type
      regisdatos = record
            codigo : Longint;
          end;
 
   const
      archivo = 'Prueva.dat';
 
 
   var
     f : file of regisdatos;
     dato : regisdatos;
     cont : Longint;
 
 
     procedure guardareg(rr : regisdatos);
     begin
        assign(f,archivo);
    {$I-} reset(f); {$I+}
       if ioresult <> 0 then
       begin
         rewrite(f);
         seek(f,0);
         write(f,rr);
         close(f);
       end
    else
       begin
          seek(f,filesize(f));
          write(f,rr);
          close(f);
       end;
     end;
 
 
   procedure rellenaarchivo;
   begin
      for cont := 1 to 200 do
      begin
         dato.codigo := cont * 5;
         guardareg(dato);
      end;
   end;
 
 
   procedure presentadatos;
   var
     tecla : char;
     y, control : integer;
   begin
       assign(f,archivo);
    {$I-} reset(f); {$I+}
       if ioresult <> 0 then
       begin
          writeln('  Error de archivo o no existe pulse una tecla');
          readkey;
       end
    else
        begin
           cont := 0;
           control := 0;
         repeat
            writeln('  Presenyados Registros = ',cont + 20);
            writeln;
            if control < (filesize(f) - cont) - 1 then
            control := 19
          else
            control := (filesize(f) - cont) - 1;
            for y := 0 to control do
            begin
            seek(f,cont + y);
            read(f,dato);
            writeln('',dato.codigo);
            end;
            cont := cont + control;
            if cont < filesize(f) - 1 then
            begin
            writeln('   Desea Ver Mas [S/N]');
            repeat
            tecla := upcase(readkey);
            until tecla in['S','N'];
            clrscr;
            end
          else
              begin
                writeln('   Fin De Archivo Pulse Una Tecla');
                readkey;
                tecla := 'N';
              end;
         until tecla = 'N';
         close(f);
        end;
   end;
 
   begin
       rellenaarchivo;
       presentadatos;
       erase(f);
   end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

como mostrar por pantalla de a poco y no todo de una en un corte de control

Publicado por Juan (8 intervenciones) el 04/11/2016 16:38:04
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
procedure corteControl (var movi:text; var vec_cajeros: vecCajeros; var vec_cuentas: vecCuentas);
var
	nro_cuenta,nro_cuenta_ant,anio,mes,dia,nro_cajero: integer;
	monto,anual_cuenta: real;
	tipo_mov,i: byte;
begin
	assign(movi,'C:\archivos_pascal\archivos\Archivos-TP-2\movi.txt');
	reset(movi);
	readln(movi,nro_cuenta,anio,mes,dia,nro_cajero,tipo_mov,monto);
	nro_cuenta_ant:=nro_cuenta;
	anual_cuenta:=0;
	i:=0;
	writeln('-Total anual de los movimientos-');
	while not eof(movi) do
	begin
		while ((nro_cuenta = nro_cuenta_ant) and (not eof(movi))) do
		begin
			if tipo_mov = 1 then
			begin
				anual_cuenta:=anual_cuenta + monto;
				vec_cuentas[nro_cuenta]:=vec_cuentas[nro_cuenta] + monto;
			end
			else
			if tipo_mov = 2 then
			begin
				anual_cuenta:=anual_cuenta - monto;
				vec_cuentas[nro_cuenta]:=vec_cuentas[nro_cuenta] - monto;
			end;
			vec_cajeros[nro_cajero]:=vec_cajeros[nro_cajero] + 1;
			readln(movi,nro_cuenta,anio,mes,dia,nro_cajero,tipo_mov,monto);
		end;
		if nro_cuenta <> nro_cuenta_ant then
		begin
			writeln('Cuenta ',nro_cuenta_ant,' : ',anual_cuenta:0:2);
			i:=i+1;
			if i mod 20 = 0 then
			begin
				readkey;
				clrscr;
			end;
			nro_cuenta_ant:=nro_cuenta;
			anual_cuenta:=0;
		end;
	end;
	if tipo_mov = 1 then
	begin
		anual_cuenta:=anual_cuenta + monto;
		vec_cuentas[nro_cuenta]:=vec_cuentas[nro_cuenta] + monto;
	end
	else
	if tipo_mov = 2 then
	begin
		anual_cuenta:=anual_cuenta - monto;
		vec_cuentas[nro_cuenta]:=vec_cuentas[nro_cuenta] - monto;
	end;
	writeln('Cuenta ',nro_cuenta_ant,' : ',anual_cuenta:0:2);
	vec_cajeros[nro_cajero]:=vec_cajeros[nro_cajero] + 1;
	close(movi);
	writeln;
	writeln('Presione cualquier tecla para volver al MENU');
end;

este es mi corte de control, logre como mostrarlo de a 20 pero no se como permitirle al usuario si lo quiere seguir viendo o no :/ me marie
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

como mostrar por pantalla de a poco y no todo de una en un corte de control

Publicado por ramon (2158 intervenciones) el 06/11/2016 12:53:42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{Mira El El Sitio Este
                   i:=i+1;
	if i mod 20 = 0 then
	begin
		readkey;
		clrscr;
	end;
Pon}
 
	i:=i+1;
	if i mod 20 = 0 then
	begin
		write('  Desea Ver Mas Datos [S/N]');
		tecla = upcase(readkey);
        if tecla = 'N' then
            break
        else
            begin
            i := 1;
            clrscr;
        end;
	end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

como mostrar por pantalla de a poco y no todo de una en un corte de control

Publicado por Juan (8 intervenciones) el 10/11/2016 01:29:10
muchisimas gracias!!! no conocia la funcion break! un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar