Pascal/Turbo Pascal - Eliminar registros

   
Vista:

Eliminar registros

Publicado por jesus camacaro (2 intervenciones) el 18/10/2013 14:55:35
Buenod dias amigos quien seria tan amable de ayudarme a eliminar registros que han sido buscado en un archivo en disco para su posterior eliminacion? el archivo es .txt
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

Eliminar registros

Publicado por ramon (2072 intervenciones) el 19/10/2013 16:24:58
{A ver aclara dudas si son registros no son archivos de texto por lo tanto dime a ver.
Un registro seria:
ratos = record
nombre
direccion
edad
num_dni
end;
y un texto seria una linea de datos que terminaría con un retun o ·#13 pero eso no indicaría ni el
inicio ni el final de datos a eliminar podrías eliminar cosas que no querrías quitar,
para poder quitarlo necesitas conocer su estructura de datos.
Dame mejor información y te podre ayudar.
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

Eliminar registros

Publicado por jesus camacaro (2 intervenciones) el 26/10/2013 22:00:28
tengo lo siguiente, placa es un integer pero yo necesito que sea un string, buscar la placa y si se encuentra se elimina, pero cuando cambio placa a string me sale error en esta parte seek(miarchivo,placa-1);
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
procedure eliminar(var miarchivo:archivo);
var
status:char;
placa: integer;
sw:boolean;
tam:integer;
registro:registros;
mitemporal:temporal;
begin
clrscr;
sw:=false;
assign(mitemporal,'temporal.dat');
reset(miarchivo);
rewrite(mitemporal);
{$I-}
Reset(miarchivo);
{$I+}
if (ioresult<>0) then
begin
write ('aun no se han agregado registros');
end;
write('Placa a eliminar: ');readln(placa);
while (eof(miarchivo)=false) do
begin
read (miarchivo,registro);
if (placa= registro.placa) then
BEGIN
clrscr;
writeln('REGISTRO ENCONTRADO');
Writeln;
sw:=true;
seek(miarchivo,placa-1);
read(miarchivo,registro);
registro.status:='B';
seek(miarchivo,placa-1);
write(miarchivo,registro);
write('<enter> para continuar ');readln;
close(miarchivo);
end
else
write(mitemporal,registro);
end;
close(miarchivo);
close(mitemporal);
erase(miarchivo);
rename(mitemporal,'registros.dat');
if (sw=false) then
begin
writeln (' REGISTRO NO ENCONTRADO');
readln; //finsi
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
0
Comentar

Eliminar registros

Publicado por ramon (2072 intervenciones) el 28/10/2013 11:26:13
Mira en esta parte del procedimiento falta algo por lo que veo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
while (eof(miarchivo)=false) do
         begin
            read (miarchivo,registro);
            if (placa = registro.placa) then
             BEGIN
                clrscr;
                 writeln('REGISTRO ENCONTRADO');
                 Writeln;
                 sw:=true;
                 seek(miarchivo,placa-1);
                 read(miarchivo,registro);
                 registro.status:='B';
                 seek(miarchivo,placa-1);
                  write(miarchivo,registro);
                   write('<enter> para continuar ');
                   readln;
                  close(miarchivo);
               end
         else
              write(mitemporal,registro);
         end;

como incrementas placa-1 para quitarle 1 como empieza su valor cuando se recorre un archivo
de registros placa se debe de iniciar a 0 y ir incrementando su valor asta tamaño archivo
en tu caso no veo incremento ninguno por ello si a 0 le quitas 1 seria -1 te dará error de lectura.
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