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:
Nel codice di sopra, lblFile è una Label che conserva il percorso del file di archivio, mentre lblPosizione conserva il numero del record corrente.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;
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.

Rispondi quotando
