Pascal/Turbo Pascal - Continuo con uso de archivos en pascal...

   
Vista:
Imágen de perfil de Marisol

Continuo con uso de archivos en pascal...

Publicado por Marisol (16 intervenciones) el 06/07/2014 15:52:51
Buenos dias; disculpen la molestia pero tengo otra pregunta,


Yo estoy haciendo un programa donde ingreso empleados, consulto todos los empleados ingreados y busco empleados por cedula con archivos y registros.

Ya se usar archivos y registros Gracias a ustedes. Ahora bien, Al consultar yo necesito que me muestre todos los empleados con nombre edad y numero de cedula, pero lo hago y solo me muestra el ultimo que ingrese. No se como puedo arreglarlo para que recorra todo el archivo y me muestre a todos los empleados por nombre cedula y edad.

Tambien quiero buscar un empleado por cedula y no se como hacerlo. Como les dije soy nueva en pascal y en archivos, mi problema es que no se como manejarlo, como le digo q busque por el campo cedula y me muestre los datos del empleado y esas cosas.

Agradeceria mucho su ayuda, de verdad quiero aprender.

Gracias de antemano.
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

Continuo con uso de archivos en pascal...

Publicado por David (8 intervenciones) el 06/07/2014 19:51:12
Para recorrer un archivo hasta el final podrías hacer lo siguiente:

1
2
3
4
5
6
7
8
9
While not eof(archivo) do
 
begin
   read(archivo,registro);
    {Aquí iría la presentación de datos. Te pongo un pequeño ejemplo:}
   Writelln(registro.cedula);
   writeln(registro.nombre);
   {Y así sucesivamente con cada campo que quieras mostrar}
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
Imágen de perfil de Marisol

Continuo con uso de archivos en pascal...

Publicado por Marisol (16 intervenciones) el 07/07/2014 00:10:17
En pseudocodigo lo habia hecho con eof mas no sabia como se podia utilizar en pascal. Entonces solo le digo que busque en el campo cedula el numero del empleado y que recorra todo el archivo hasta encontrarlo. Voy a hacerlo a ver que me sale.

Muchas gracias de verdad.

Una pregunta, cuando escriben esto registro.cedula[2] que significa? que estan viendo el registro numero 2?por que veia ejemplos aqui y alguien escribio asi, como si fuera un arreglo.
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

Continuo con uso de archivos en pascal...

Publicado por David (8 intervenciones) el 07/07/2014 09:24:21
Hace referencia al valor de la posición 2 del campo cédula. Si lo tratas como string te devolverá un carácter alfanumérico. Si es un array, dependerá del tipo que hayas declarado el array.
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
Imágen de perfil de Marisol

Continuo con uso de archivos en pascal...

Publicado por Marisol (16 intervenciones) el 08/07/2014 00:02:43
Aaaaaaah ooook pense q se referia al numero de registro. Una pregunta, que libro o link me recomiendas como para poder aprender pascal asi como ustedes? Siempre me encuentro una tranca tratando estudiar por mi misma. Quisiera un libro o algun link q pueda leer para aprender todo.. :-(
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

Continuo con uso de archivos en pascal...

Publicado por David (8 intervenciones) el 08/07/2014 08:57:52
En esta misma página, en la sección de manuales podrás encontrar algunos que te serán bastante útiles. También puedes echar un vistazo a la siguiente dirección:

http://www.nachocabanes.com/

En cuanto a otros tutoriales podrías buscar un libro que se titula La biblia de Turbo Pascal. No lo he buscado pero imagino que no te costará mucho encontrarlo en la web en pdf o doc.
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

Continuo con uso de archivos en pascal...

Publicado por ramon (39 intervenciones) el 07/07/2014 11:28:15
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
{Mira este ejemplo te ayudara}
 
 program archivos;
 uses
        crt;
  type
      regisdatos = record
                nombre    : string[80];
                edad      : integer;
                direccion : string[100];
                 dni           : string[20];
         end;
 
  var
      datos : regisdatos;
      f : file of regisdatos;
 
 
       procedure guardadatos(d : regisdatos);
       begin
              assign(f,'archidat.dat');
     {$I-} reset(f);  {$I+}
    if ioresult <> 0 then
    begin
           rewrite(f);
            seek(f,0);
            write(f,d);
            close(f);
     end
 else
        begin
               seek(f,filesize(f));
               write(f,d);
               close(f);
        end;
   end;
 
 
   procedure entradadatos;
   begin
          clrscr;
           writeln('    ****** Entrada De Datos ******');
           writeln;
        with datos do
      begin
            write('   Entre Nombre    :');
             readln(nombre);
             write('  Entre Edad      :');
              readln(edad);
             write('  Entre Direccion :');
             readln(direccion);
             write('  Entre DNI       :');
             readln(dni);
         end;
              guardadatos(datos);
   end;
 
 
    procedure presentadatos;
     var
         arch : longint;
    begin
            assign(f,'archidat.dat');
     {$I-} reset(f);  {$I+}
    if ioresult <> 0 then
    begin
            writeln('     Error de archivo pulse una tecla');
             readkey;
     end
  else
         begin
            writeln('   ***** Presentacion Archivos *****');
            writeln('  Nombre     Edad       Direccion    DNI');
            for arch := 0 to filesize(f) - 1 do
            begin
                   seek(f,arch);
                    read(f,datos);
                     with datos do
                     begin
                    writeln('  ',nombre,'     ',edad,'       ',direccion,
                                 '    ',dni);
                    end;
               end;
                writeln;
                writeln('   Pulse una tecla');
                readkey;
                close(f);
           end;
       end;
 
   procedure Localizadni;
   var
     num : string[20];
     vu : longint;
     lon : integer;
   begin
      clrscr;
      writeln('  Localizacion Por Num. DNI ');
      writeln;
      write('   Entre DNI : ');
      readln(num);
      for lon := 1 to length(num) do
      num[lon] := upcase(num[lon]);
      assign(f,'archidat.dat');
     {$I-} reset(f);  {$I+}
    if ioresult <> 0 then
    begin
      writeln('     Error de archivo pulse una tecla');
       readkey;
     end
  else
       begin
          for vu := 0 to filesize(f) - 1 do
           seek(f,vu);
           read(f,datos);
           for lon := 1 to length(datos.dni) do
           datos.dni[lon] := upcase(datos.dni[lon]);
           if datos.dni = num then
           begin
              break;
           end;
       end;
       close(f);
       clrscr;
       writeln('   Los Datos Son');
       writeln;
       writeln('  ',datos.nombre,'     ',datos.edad,'       ',datos.direccion,
                                 '    ',datos.dni);
       writeln;
       writeln('   Pulse Una Tecla');
       readkey;
   end;
 
 
    procedure menu;
    var
      sal : boolean;
      tecla : char;
    begin
        sal := false;
    repeat
        clrscr;
        writeln('  ****** Menu General ******');
        writeln;
        writeln('   E = Entrada Datos');
        writeln('   V = Ver Datos');
        writeln('   L = Localizacion Por Num. DNI');
        writeln('   S = Salir');
        writeln;
        writeln('   Elija Opcion ');
        repeat
             tecla := upcase(readkey);
        until tecla in['E','V','L','S'];
        clrscr;
      case tecla of
  'E' : entradadatos;
  'V' : presentadatos;
  'L' : Localizadni;
  'S' : sal := true;
     end;
    until sal = true;
    end;
 
 
 
    begin
       menu;
    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