Curiosità:
Ma il comando File.Save salva sovrascrivendo il precedente file, o c'è possibilità di accodarlo senza bisogno di fare ad esempio:
stringa=File.load("nomefile")
stringa &= RobaDaAccodare
File.Save("nomefile", stringa)
Durante la dichiarazione di OPEN se metti APPEND aggiunge dati in fondo al file, se metti CREATE cancella il file se esiste prima di scriverci:
OPEN file FOR OUTPUT [CREATE|APPEND]
Ciao, allora, io provo a fare in questo modo:
file.Save(user.home & "/lastcheck.txt", "<dt><font color=" "#FFFFFF" ">" & Time(Now) & " (last check)</dt>")
file.Save(MntFolder & "/lastcheck.txt", "<dt><font color=" "#FFFFFF" ">" & Time(Now) & " (last check)</dt>")
Nel primo caso salvo il file sull'hard disk, e funziona.
Nel secondo caso, io ho montato una directory su un disco in rete, ma mi dice "access forbidden".
Suppongo ci sia qualche problema con autorizzazioni e permessi, giusto?
Mi secca non riuscire a fare una cosa tanto semplice....
Voglio salvare un file nella cartella locale:
File.save("pippo.txt","ciao")
E mi mette "Access forbidden"
Se invece utilizzo il path completo:
File.save("/home/Michele/.../pippo.txt","ciao")
funziona.
Perchè?
dipende da che permessi ha la cartella locale ,
comunque è consigliabile sempre far in modo che il programam salva i dati all' esterno della cartella locale , solitamente si crea una cartella con il nome del programma nella home , tale cartella può essere visibile o nascosta a tua scelta e la raggiungi con:
File.save(user.home & "/nome_cartella/nome_file.txt","ciao")
per creare la cartella:
if not exist(user.home & "/nome_cartella") then
mkdir user.home & "/nome_cartella"
END IF
questo discorso perchè una volta che crei l' eseguibile e lo pacchettizzi , questo verrà posto in /usr/bin e quindi il programma stesso non potra scriverci , inoltre un utente linux si aspetta che vari file relativi ad un programma si trovino in /home/nome_utente/nome_programma oppure in /home/nome_utente/.nome_programma
i file presenti nella cartella locale del progetto DEVONO sempre essere utilizzati solo per operazioni di lettura
dipende da che permessi ha la cartella locale ,
Non sembrerebbe... :-\
Vorrei svolgere una riflessione sulla domanda posta da El Berto.
Quando si pone nel codice di un progetto il semplice nome (con eventuale estensione) di un file, significa che si punta alla cartella "Dati" del progetto medesimo, ossia insomma alla cartella medesima del progetto.
Ho notato che il tentativo di effettuare delle azioni su quel file può avere due diversi effetti e risultati, a seconda se viene specificato espressamente, o meno, l'intero percorso del file.
Poniamo il seguente esempio: tenteremo di svolgere delle azioni con un file chiamato "prova". Al fianco di ciascuna riga di comando riporto il risultato:
Public Sub Button1_Click()
File.Save("prova", "questa è una prova") ' Impossibile salvare il file: "Access forbidden" (come nell'esempio di "El Berto")
' Però (ovviamente commentando la riga precedente)......
File.Save(Application.Path &/ "prova", "questa è una prova") ' Possibile salvare il file
End
Da questo primo esperimento vediamo che l'accesso al file è possibile, ma solo se viene specificato espressamente il percorso.
Se andiamo a vedere i permessi del file, salvato (con la seconda modalità ovviamente) nella cartella "Dati" del progetto, avremo questa sorpresa analoga al risultato precedente:
Public Sub Button2_Click()
Print Stat("prova").Auth ' Il file risulta essere solo leggibile: in console infatti avremo: r--------
' Però....
Print Stat(Application.Path &/ "prova").Auth ' il file risulta sia leggibile che scrivibile: in console infatti avremo: rw-rw-r--
End
:rolleyes:
Ugualmente, se operiamo con le seguenti funzioni di Gambas:
Public Sub Button3_Click()
Copy "prova" To User.Home &/ "prova" ' Possibile copiare il file
Move "prova" To User.Home &/ "prova" ' Impossibile spostare il file
' Però (ovviamente commentando la riga precedente)......
Move Application.Path &/ "prova" ' Possibile spostare il file
End
Come anche con la funzione Kill di Gambas:
Public Sub Button4_Click()
Kill "prova" ' Impossibile eliminare il file: "Access forbidden"
' Però (ovviamente commentando la riga precedente)......
Kill Application.Path &/ "prova" ' Possibile eliminare il file
End
Insomma, lo stesso file individuato nel suo percorso in due maniere differenti, restituisce un duplice comportamento e risultato differente :-\ da parte di Gambas.
...Riprendo, dunque, e ripongo la domanda di El Berto, integrandola sulla base di quanto sopra esposto......