Oppure

Loading
21/03/10 20:58
Come si può fare per verificare se esiste un file??
21/03/10 22:07
Poggi Marco
Il nome del file è assegnato nel programma, o è deciso in esecuzione?
aaa
21/03/10 22:17
È già assegnato.
22/03/10 11:34
gigisoft
Postato originariamente da Giarados:

Come si può fare per verificare se esiste un file??


Salve,
il metodo che usavo io a suo tempo era il seguente:
1) Disabilitare il blocco del compilatore sugli errori di I/O con la direttiva:

{$I-}


2) Tentare di aprire il file;

3) Riabilitare il blocco del compilatore sugli errori di I/O con la direttiva:

{$I+}


4) Se l'operazione non e' andata a buon fine, il compilatore non blocca l'esecuzione, ma assegna alla variabile d'ambiente IOResult un valore diverso da 0, se invece il valore della variabile viene messo a 0 allora l'operazione e' riuscita ( e di conseguenza il file esiste ).

Ciao :k:

Luigi
aaa
22/03/10 19:16
Mi dispiace :( ma non capisco :(
22/03/10 19:56
Poggi Marco
Caspita, gigisoft ha ragione!

Prova questo programma:

program CercaFile;
uses crt;
type tsms=string[180];
var percorso,NomeFile:tsms;
    
function cerca(g:tsms):boolean;
var f:text;
    ch:boolean;
begin
 {$I-}  { disinserisco il blocco degli errori }
 assign(f, g);
 reset(f); { tento di riaprire il file }
 {$I+}  { ripristino il blocco degli errori}
 if IOresult=0 then  { verifico l' apertura del file }
 begin
  ch:=true;
  close(f);  
 end
 else ch:=false;
 cerca:=ch;
end;

begin
 GetDir(0, percorso); 
 write('Quale file cerchi ? ');
 readln(NomeFile);
 if cerca(percorso+'\'+NomeFile) then writeln('File trovato ')
 else writeln('File non trovato');
 readln;
end.
Ultima modifica effettuata da Poggi Marco 22/03/10 19:58
aaa
22/03/10 20:08
Ok, adesso ho capito, grazie ;) mi serviva per inizializzare i file di configurazione di snake :D
26/03/10 16:40
Phi

Grazie a Gigi. Quello che ha postato mi sarà utilissimo per molti programmi.

Comunque è possibile usare anche le funzioni della unit DOS (ci sono anche in sysutils anche se cambiano nome).

FindFirst(nome, anyfile, <variabile SearchRec>;);
se (DosError<>0) allora il file non esiste.
Oppure FileExist
aaa