PDA

View Full Version : [C++]eseguire ed eliminare un file


djpeppe
29-04-2007, 10:08
ho creato un programma che usa dei file temporanei.
vorrei che quando salvo un file elimini quello temporaneo e faccia partire quello salvato. si può fare?
GRAZIE

cionci
29-04-2007, 10:11
Sistema operativo e compilatore ?

andbin
29-04-2007, 10:15
elimini quello temporaneoPer eliminare un file puoi usare remove() (stdio.h)

faccia partire quello salvatoChe intendi per "faccia partire" ???? Forse come se tu facessi doppio click sul file??

djpeppe
29-04-2007, 10:21
SISTEMA OPERATIVO: WINXP MEDIA CENTER


FILE *prova;
....
remove(prova);


lo uso così?

---

si come con il doppio click, lo deve eseguire - far partire

cionci
29-04-2007, 10:27
No, gli devi passare una stringa che identifica il percorso ed il nome del file:

remove("C:\\pippo\\pluto.ext");

Dopo l'esecuzione vuoi che il tuo programma termini subito ? Oppure vuoi che resti aperto e continui a funzionare mentre il programma lanciato viene eseguito ?
Che compilatore usi ?

djpeppe
29-04-2007, 10:41
uso microsoft visual c++ 6 pro
cmq se puoi mi posti entrambi i modi? sia lasciandolo aperto che non, grazie
cmq il file temporaneo viene creato nella stessa cartella dove si trova il programma, per eliminarlo faccio
remove("\\prova.txt");

cionci
29-04-2007, 10:46
remove("\\prova.txt");
Allroa fai così: remove("prova.txt");
cmq se puoi mi posti entrambi i modi? sia lasciandolo aperto che non, grazie
Il fatto è che ci sono due famiglie diverse di funzioni...la exec, che termina il programma corrente lanciandone un altro e la spawn (che non è standard) e che permette o di attendere la fine dell'esecuzione del programma lanciato e poi riprendere o di continuare la normale esecuzione del tuo programma mentre l'altro è in esecuzione...

andbin
29-04-2007, 10:55
cmq se puoi mi posti entrambi i modi? sia lasciandolo aperto che nonVedi le funzioni Win32 ShellExecute/ShellExecuteEx.
Se non vuoi attendere usi semplicemente ShellExecute. Se vuoi attendere la terminazione del programma che aprirà il file usi ShellExecuteEx. È un po' più complicata per via della struttura ma così ti permette di avere il hProcess del processo. Da usare poi con WaitForSingleObject per attendere la terminazione del processo.

cmq il file temporaneo viene creato nella stessa cartella dove si trova il programma, per eliminarlo faccio
remove("\\prova.txt");Dovresti mettere solo il nome e basta (niente path, nemmeno "\\" cioè \ perché sarebbe assoluto rispetto al drive).
Ma nota, senza alcun path, per essere precisi, sarebbe relativo alla directory corrente (che non è detto sia quella in cui è presente l'eseguibile).