ayuda , longvariable no le encuentro de error al insertar
Publicado por rodrigo (1 intervención) el 02/05/2014 11:13:04
necesito ayuda con el programa de long variable . esta primitiva no me anda y no se por que tengo que entregar el trabajo el martes y hace 2 dias q no le encuentro el error .para los q no entienden de que se trata . el insertar tiene q buscar un bloque donde tenga algo de espacio vacio donde entren esos datos q voy a agregar . si lo encuentra lo tiene q agregar a ese bloque y despues al archivo . si no lo encuentro debe . crear un bloque nuevo . copiarle los datos y agregarlo al final del archvo
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
procedure insertar(var pp: tPersonas; dni:string;nombre:string;apellido:string;fecha:string);
{Agrega una persona en el primer bloque que tenga espacio o, si no hay ninguno,
en un bloque nuevo al final del archivo}
Var
tamregdni,tamregnombre,tamregapellido,tamregfecha:Byte;
tamReg: Byte;
libres: Word;
disponibles: Integer;
aux:string;
n:integer;
Begin
seek(pp.espLibre,0);
tamReg:=Length(dni)+1+length(nombre)+1+length(apellido)+1+length(fecha)+1;
Repeat
Read(pp.espLibre, libres);
disponibles:=libres-Round((1-PorcCarga)*CapacBloque)
{bytes libres menos los que no se pueden usar para altas}
until eof(pp.espLibre) or (disponibles>=tamReg);
If tamReg>disponibles then
begin
{hay que agregar un nuevo bloque al final del archivo}
pp.bloque.cantRegs:=0;
libres:=CapacBloque;
pp.iBloque:=1;
Seek(pp.arch, FileSize(pp.arch))
end
else Begin
Seek(pp.arch, FilePos(pp.espLibre)-1); Read(pp.arch, pp.bloque);
pp.iBloque:=CapacBloque-libres+1;
Seek(pp.arch, FilePos(pp.espLibre)-1); seek(pp.espLibre, FilePos(pp.espLibre)-1)
end;
tamregdni:=length(dni)+1;
Move(dni, pp.bloque.contenido[pp.iBloque], tamRegdni);
inc(pp.ibloque,tamregdni);
tamregnombre:=length(nombre)+1;
Move(nombre, pp.bloque.contenido[pp.iBloque], tamregnombre);
inc(pp.ibloque,tamregnombre);
tamregapellido:=length(apellido)+1;
Move(apellido, pp.bloque.contenido[pp.iBloque], tamregapellido);
inc(pp.ibloque,tamregapellido);
tamregfecha:=length(fecha)+1;
Move(fecha, pp.bloque.contenido[pp.iBloque], tamregfecha);
inc(pp.ibloque,tamregfecha);
Inc(pp.bloque.cantRegs);
Dec(libres,tamReg);
Write(pp.arch, pp.bloque);
Write(pp.espLibre, libres);
writeln('file pos ',filepos(pp.arch));
readln();
end;
Valora esta pregunta


0