![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Tal y como veo yo como funciona:
Código:
j:=posicion(reg.Nombre);
if j=-1 then
begin
seek(arch,filesize(arch));
write(arch,reg);
//si j=-1 se añade 1 registro al final del fichero
end
else
begin
seek(arch,j);
write(arch,reg);
//si j<>-1 se cambia el registro j por el nnuevo
end;
|
|
#2
|
|||
|
|||
|
muchas gracias a todos por haberse molestado en tratar de ayudarme, les comento que ya encontre cual era el problema, como decis vos julia T , en el procedimiento de guardar no habia ningun error, el problema estaba en el procedimiento de posicion que era el que se fijaba si el nombre ya existia o no, y de acuerdo a eso sobreescribia el existente o lo agregaba al final , respectivamente, como la variable para leer los registros era del tipo global, siempre me cambiaba el nuevo registro con el primero que leia para verificar si existia o no, gracias a los watches me pude dar cuenta.
Código:
function posicion(n:string40):integer;
var
res:boolean;
begin
res:=false;
seek(arch,0);
while not eof(arch) and not res do
begin
read(arch,reg);// aca estaba el problema
res:=AnsiUpperCase(reg.Nombre)=AnsiUpperCase(n);
end;
if res then
posicion:=filepos(arch)-1
else
posicion:=-1;
end;
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|