Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: lucarep8 - Marzo 07, 2020, 09:13:47 am

Titolo: errore SaveToFile
Inserito da: lucarep8 - Marzo 07, 2020, 09:13:47 am
Ciao a tutti,
carico in un TMemo un file di testo esistente, quando lo salvo mi da' errore:

memoNote.Lines.LoadFromFile(nomeFileInfo);
memoNote.Lines.SaveToFile(nomeFileInfo);

EFCreateError
Unable to create file...

Qualcuno sa dirmi perchè capita e se si può rimediare?
grazie
Titolo: Re:errore SaveToFile
Inserito da: nomorelogic - Marzo 07, 2020, 09:25:16 am
potrebbe essere un problema di permessi o un errore nel contenuto di nomeFileInfo (se ne cambi il valore tra load e save)

servirebbero più informazioni, ad esempio il sistema operativo che usi ed il valore di nomeFileInfo
inoltre prova con questo codice, quando occorre l'eccezione ti verrà mostrato anche un messaggio più preciso

Codice: [Seleziona]
try
   memoNote.Lines.LoadFromFile(nomeFileInfo);
   memoNote.Lines.SaveToFile(nomeFileInfo);
except
  on e: exception
  ShowMessage(e.message);
end;
Titolo: Re:errore SaveToFile
Inserito da: lucarep8 - Marzo 07, 2020, 11:58:04 pm
Ciao,
ti ringrazio,
ho provato ma il messaggio è sempre solo 'unable to create file'.
Del resto a pensarci bene è anche normale, sto tentando di sovrascrivere un file...
Comunque S.O. è win10
Titolo: Re:errore SaveToFile
Inserito da: lucarep8 - Marzo 08, 2020, 12:07:23 am
forse ho capito, in tutti gli esempi che ho trovato
lettura e scrittura avvengono nella stessa procedura,
mentre io eseguo load in una e save in un'altra, può essere questo il motivo?
Titolo: Re:errore SaveToFile
Inserito da: bonmario - Marzo 08, 2020, 08:01:30 am
mentre io eseguo load in una e save in un'altra, può essere questo il motivo?

No, a meno che venga cambiato, per qualsiasi motivo, il nome del file nel frattempo.

Fai quello che ti è stato consigliato nei giorni scorsi da nomorelogic: leggi e scrivi il file in 2 operazioni successive. Se così funziona, ti togli il dubbio d un problema di permessi in scrittura.
Toltoci questo dubbio, un'altra prova che dovresti fare, è quella di metterti in debug il programma appena prima della scrittura, e verificare che il nome del file di destinazione sia ancora quello corretto.

Ciao, Mario
Titolo: Re:errore SaveToFile
Inserito da: Otto - Marzo 08, 2020, 08:59:04 am
@lucarep8

Ciao, bonmario ti ha dato un ottimo consiglio.
Nel caso tu non avessi già risolto il tuo problema ti consiglierei di creare un piccolo progetto, contenente solo la parte riguardante il salvataggio del file, e di postarlo sul forum (non includere i file .exe o di debug).
È molto importante sapere in quale cartella tu voglia salvare il file.

Saluti.

Otto.
Titolo: Re:errore SaveToFile
Inserito da: lucarep8 - Marzo 10, 2020, 10:30:30 pm
Ciao,
ringrazio tutti per la disponibilità e le risposte; ho risolto (salvo sorprese, ma almeno per ora non da' errore) memorizzando il nome del file in una variabile, cioè passando da questo codice:

  memoNote.Lines.LoadFromFile(MasterDir + '\' + PraticaCorrente + '\' + nomeFileInfo);
  memoNote.Lines.SaveToFile(MasterDir + '\' + PraticaCorrente + '\' + nomeFileInfo);     

a questo:

 Nome1 := MasterDir + '\' + PraticaCorrente + '\' + nomeFileInfo;
  memoNote.Lines.LoadFromFile(Nome1);
  memoNote.Lines.SaveToFile(Nome1); 

anche se non capisco perchè prima non funzionasse...
Titolo: Re:errore SaveToFile
Inserito da: bonmario - Marzo 11, 2020, 08:27:30 am
Probabilmente, col vecchio metodo, quando arrivavi a salvare il file, le 2 variabili erano "sporche".
L'avresti visto mettendoti in debug su quella riga, e verificandone il valore "in quel momemto".

Ciao, Mario
Titolo: Re:errore SaveToFile
Inserito da: nomorelogic - Marzo 11, 2020, 09:17:04 am
ho provato ma il messaggio è sempre solo 'unable to create file'.
Del resto a pensarci bene è anche normale, sto tentando di sovrascrivere un file...

felice che tu abbia risolto :)
ma probabilmente il valore della variabile cambiava prima del save:
se stai tentando di sovrascrivere un file, non dovresti avere un errore di tipo 'unable to create file'