Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    10

    [DELPHI]Cancellare file di record errore I/O 32

    Ciao ragazzi,sto facendo una cancellazione in un file di record .dat e quindi mi sono munito di un file di appoggio dove ho copiato tutti i record da NON cancellare,dopodichè la mia intenzione era quella di cancellare il file originale e rinonimare il file di appoggio con il nome del file originale,ovviamente il tutto da codice.
    pratiacamente io copio tutto nel file di appoggio(tranne appunto il record da canc) e al momento della fine della lettura del file originale (fuori dal while not(eof(f)) metto il closefile(f); e fin qui tutto va bene e poi erase(f); però qui il programma si pianta dandomi I/O Error 32....
    è un po' che ci smanetto ma non ci salto fuori,come faccio???help

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    10
    ho provato a usare il deletefile('percorso file') ma non lo cancella senza dare nessun errore..provando invece a usare deletefile('percorso file a caso vuoto') (messo nello stesso punto della procedura) mi cancella il file...com'è possibile??

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    ciao,

    prova a postare un po di codice

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    10
    ecco...il bello è che ho provato a mettere il deletefile dello stesso file nella prima unit(ho usato 5 form) e da li me lo cancella...ho provato a metterlo all'inizio di questa procedura per vedere se era un problema di controlli e continua a non cancellarlo...comunque ecco la procedura:
    codice:
    assignfile(f,'percorso file da cancellare');
      reset(f);
      assignfile(g,'percorso file di appoggio');
      {$I-}
      reset(g);
     {$I+}
     if ioresult<>0 then rewrite(g);
      s1:=txtCanc.Text; {salva in s1 il nome del record da canc);
      while not(eof(f)) do begin
       x:='';y:='';
        read(f,rec);
        for i := 1 to length(s1) do begin
           x:=x+upcase(s1[i]);
        end;
        for i := 1 to length(rec.nome) do begin
           y:=y+upcase(rec.nome[i]);
        end;
        if x=y  then begin
        flag:=true;
       {scrittura nella tabella,funziona}
        if MessageDlg('Sicuro?',mtConfirmation,[mbYes, mbNo],0)=mrYes then begin
           {copio in un file di "ripristino" le informazioni che vanno cancellate,funziona}
           assignfile(r,'percorso file ripristino');
           {$I-}
           reset(r);
          {$I+}
           if ioresult<>0 then rewrite(r);
           seek(r,filesize(r));
           write(r,rit);
           end;
        end else begin
        {copio tutte le info,tranne quella da cancellare nel file di appoggio,funziona}
        seek(g,filesize(g));
        write(g,farmacia);
        end;
       end;
       closefile(f);
       deletefile('percorso file originale');{non me lo cancella}
       rename(g,'nome file originale');
       end;

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    come da te descritto sembrerebbe un problema di lock

    non e' che in una di queste 5 form che usi c'e' un riferimento al tuo file tale che lo locka?

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    10
    ho provato a cambiare il nome del file da cancellare in questa procedura e ho visto che così me lo cancella ma mi crea sempre un file con lo stesso nome nella stessa cartella vuoto..eppure in questa unit non c'è nessun rewrite(f); che me lo ricrea...mi spiego meglio:
    nell'assignfile del file da cancellare l'ho chiamato "filedati2.dat" (l'originale è filedati.dat),faccio partire tutto e quando cancello e confermo,vado nella cartella file e mi trovo un "filedati.dat" da 0Kb vuoto...qual'è il problema??Non posso fregarmene perchè devo rinonimare il file di appoggio con il nome "filedati.dat"

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    a questo punto, io verificherei con il debug cosa succede quando tenti di cancellare il file...

    proverei a capire l'eccezzione che si solleva

    usa try...except...end

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    10
    trovato erano dei closefile messi male nelle altre unit...finalmente finito grazie mille

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    10
    un'altra domanda...come faccio se io ho impostato il numero di righe di una stringgrid a 10 e visualizzo un record per riga se ho tipo 20 record,come posso aggiungere delle altre righe nella tabella da codice e far comparire la scroll bar a fianco per scorrere l'elenco??grazie

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    in che componente visualizzi i record?

    prova ad utilizzare il componente tlistbox e setta la visualizzazione della scrollbar...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.