Pascal/Turbo Pascal - Duda comprobación while Pascal

 
Vista:
sin imagen de perfil

Duda comprobación while Pascal

Publicado por Juan Tomás (1 intervención) el 28/08/2023 10:05:45
Tengo un problema con Pascal. Estoy creando una base de datos de personas, con la función NUEVO de crear registro tiene que verificar que el nº de documento introducido no se encuentre ya en la base de datos. El primer problema que me encuentro es que hace la verificación una vez cerrado el programa, pero no hace la comprobación mientras el programa está en ejecución y voy introduciendo registros.

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
if  FileExists (BASEDEDATOS_NOMBRE_REAL) then begin
              reset (archivoDataBase);
              seek (archivoDataBase, FileSize (archivoDataBase));
           end else begin
               rewrite (archivoDataBase);
           end;
 
{DENTRO DE CREAR REGISTRO, REALIZARMOS ESTA VERIFICACION}
 
 while not eof (archivoDataBase) do begin
         read (archivoDataBase,registroPersonaAux);
         prueba:=compareStr (objCom.listaParametros.argumentos[1].datoString, registroPersonaAux.Documento)=0;
         if prueba=true then begin
           writeln ('Ya existe este numero de documento');
           write (PROMPT);
           readln (entradaEstandar);
           ObjCom:=crearComando(entradaEstandar);
           sysCom:=comandoSistema(objCom);
         end;
  end;
 
seek (archivoDataBase, FileSize (archivoDataBase));
              write (archivoDataBase, registroPersona);
              writeln ('Registro agregado correctamente');
 
              registroPersona.Documento:='';
              registroPersona.Nombre:='';
              registroPersona.Apellido:='';
              registroPersona.Edad:=0;
              registroPersona.Peso:=0;
 
              CloseFile (archivoDataBase);


Muchas gracias de antemano por la ayuda prestada.

Saludos.
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

Duda comprobación while Pascal

Publicado por geergon (2 intervenciones) el 16/09/2023 23:09:53
Juan,

Espero estes bien.

El problema asi como lo describes suena como a algo del posicionamiento del archivo.

Intenta hacer un poco de debugging imprimiento el "File Position"

https://putka-upm.acm.si/langref/turboPascal/055A.html

Veo que antes de escribir al ultimo registro haces un seek para ir al final del archivo.

Intenta tener otro seek antes de comenzar el ciclo de compromacion de duplicados. Pero esta vez para asegurarte que esta al inicio del archivo.

seek (archivoDataBase, 0);

Mucha Suerte!
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