Ciao a tutti,
ho un serio problema che riguarda la cancellazione di un record all'interno di un file ad accesso random.
Se i record in archivio sono pochi, la cancellazione avviene senza problemi. Al contrario, quando diventano più di 200, la cancellazione non avviene anche se non ricevo nessun messaggio di errore.
Il codice da me utilizzato è il seguente:
codice:
type
recordtype=record
varCognome :string[50];
varNome :string[50];
varEmail :string[250];
end;
qfile:file of recordtype;
qfileTemp:file of recordtype;
qrecord:recordtype;
numrec:integer;
numtemp:integer;
procedure TfrmArchivio.imgEliminaMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
try
ASSIGNFILE(qfile, Trim(lblFile.Caption));
Reset(qfile);
ASSIGNFILE(qfiletemp, ExtractFilePath(application.exename) + '\Archivio.tmp');
REWRITE(qfiletemp);
For numtemp:=0 To filesize(qfile)-1 Do
begin
seek(qfile,numtemp);
read(qfile,qrecord);
If IntToStr(numtemp + 1) <> Trim(lblPosizione.Caption) Then
begin
write (qfiletemp, qrecord);
end;
end;
closefile(qfile);
closefile(qfiletemp);
deletefile(Trim(lblFile.Caption));
renamefile(ExtractFilePath(application.exename) + '\Archivio.tmp', Trim(lblFile.Caption));
except
ShowMessage('Attenzione: il sistema non permette di accedere all''archivio.' + #10 + #13 + #10 + #13 + 'Accertarsi di possedere i privilegi di scrittura nella cartella di installazione del programma.');
exit;
end;
end;
Nel codice di sopra, lblFile è una Label che conserva il percorso del file di archivio, mentre lblPosizione conserva il numero del record corrente.
Ho notato che, quando avviene il malfunzionamento, l'archivio temporaneo viene regolarmente creato ma poi non sovrascrive il file originale.
Qualcuno sa dirmi come è possibile risolvere il problema?
Grazie in anticipo.