Un dossier n'est pas supprimé s'il contient des fichiers non fermés. - page 3

 
Реter Konow:
Pour autant que je sache, si aucune modification n'a été apportée au fichier à l'aide des fonctions de fichier (par exemple, FileWrite()), il n'est pas nécessaire de le fermer. La fonction FileOpen() crée simplement un nouveau fichier et cette opération ne nécessite pas la fermeture du fichier (la documentation de cette fonction ne précise pas non plus que le fichier doit être fermé après sa création).

Oy-lee ! Conteur https://docs.mql4.com/ru/files/fileopen


//--- la manière correcte de travailler dans le "sandbox" du fichier
ResetLastError() ;
filehandle=FileOpen("fractals.csv",FILE_WRITE|FILE_CSV) ;
si(filehandle!=INVALID_HANDLE)
{
FileWrite(filehandle,TimeCurrent(),Symbol(),EnumToString(ENUM_TIMEFRAMES(_Period)) ;
FileClose(filehandle) ;
Print("FileOpen OK") ;
}
autrePri

FileOpen - Файловые операции - Справочник MQL4
FileOpen - Файловые операции - Справочник MQL4
  • docs.mql4.com
FileOpen - Файловые операции - Справочник MQL4
 
Rashid Umarov:

Oy-lee ! Conteur https://docs.mql4.com/ru/files/fileopen


Quelle est la contradiction avec ce que j'ai dit ?

J'ai dit...

Retag Konow:
Pour autant que je sache, si aucune modification n'a été apportée au fichier à l'aide des fonctions de fichier (par exemple, FileWrite()), il n'est pas nécessaire de le fermer. La fonction FileOpen() crée simplement un nouveau fichier et cette opération ne nécessite pas la fermeture du fichier (la documentation de cette fonction ne précise pas non plus que le fichier doit être fermé après sa création).


Mais dans votre exemple, la fonction FileWrite() est utilisée immédiatement après la création du fichier. Puis vous utilisez FileClose(filehandle) ;


De plus, dans le code du script ci-dessus, j'ai ajouté une fermeture explicite, mais cela n'a rien résolu...

 
Реter Konow:

Exactement comme ça. Lorsque j'essaie de supprimer un dossier qui contient déjà des sous-dossiers et des fichiers, je supprime d'abord les fichiers. Seuls les sous-dossiers restent. J'essaie de les nettoyer en utilisant FolderClean() puis j'appelle FolderDelete(). Cependant, le résultat est que les sous-dossiers qui étaient vides sont bien supprimés, mais s'il y avait plus de sous-dossiers à l'intérieur des sous-dossiers, ils ne sont pas supprimés. Ensuite, j'essaie de supprimer manuellement les dossiers du navigateur de fichiers dans MetaEditor, mais le terminal ne les supprime pas et fait apparaître cette fenêtre :

Je clique sur "Continuer", j'accepte les modifications, mais le dossier n'est toujours pas effacé. Après avoir complètement fermé et rouvert le terminal, les dossiers à effacer disparaissent d'eux-mêmes ou non, mais vous pouvez les effacer immédiatement et manuellement sans la fenêtre ci-dessus.

Des choses si étranges...

J'ai vu ce genre de chose plusieurs fois. J'ai compris qu'à un moment donné, le dossier Files, avec tous ses sous-dossiers et fichiers, obtient un attribut de lecture seule. Désélectionner ce drapeau manuellement n'aide pas. Mais redémarrer le terminal aide toujours. Je n'ai pas pu le faire jouer (je n'ai pas essayé), donc je ne l'ai pas signalé à SD.

 
A100:

L'erreur (5022) ne se produit que si vous définissez FILE_COMMON

Il efface le dossier mais ne le supprime pas.

Ce drapeau n'a pas besoin d'être activé, sinon le fichier sera recherché dans le dossier partagé, et l'erreur indique que le nom du répertoire est incorrect.

Chemin du fichier

"\\MQL4\\Files";

n'exige pas que ce drapeau soit activé. Donc tout est correct.

 
fxsaber:

J'ai vu ce genre de chose se produire un certain nombre de fois. J'ai découvert qu'à un moment donné, le dossier Files, avec tous ses sous-dossiers et fichiers, obtient un attribut de lecture seule. Désélectionner ce drapeau manuellement n'aide pas. Mais redémarrer le terminal aide toujours. Je n'ai pas pu le faire jouer (je n'ai pas essayé), donc je ne l'ai pas signalé à SD.

Merci. Je suis content de ne pas être le seul à rencontrer ce problème. Je dois résoudre ce problème (je ne peux pas finir d'utiliser lenavigateur de fichiers sans lui). J'ai écrit à Servicedeck. Mais j'écris ici aussi, juste au cas où. Il s'est avéré que ce n'était pas en vain).
 
Реter Konow:

Ce drapeau n'a pas besoin d'être activé, sinon le fichier sera recherché dans le dossier public et l'erreur indique que le nom du répertoire est incorrect.

Avec et sans FILE_COMMON, cela fonctionne (à l'origine, lors de la vérification, j'ai oublié de mettre ce drapeau dans le dernier if). Avec FILE_COMMON, il était sous-entendu qu'il était présent dans toutes les opérations.

 
Реter Konow:

Ce drapeau n'a pas besoin d'être activé, sinon le fichier sera recherché dans le dossier public, et l'erreur indique que le nom du répertoire est incorrect.

Le chemin d'accès au fichier

n'exige pas que ce drapeau soit activé. Donc tout est correct.

C'est étrange. J'ai remarqué les chemins du dossier MQL4 et j'ai recompilé le code en .ex4 et, étrangement, le code a fonctionné sans erreur. J'ai supprimé la fermeture du fichier et j'ai obtenu

2017.08.28 17:36:18.525 Demo_FolderDelete EURUSD.e,H4: Не удалось удалить папку nonempty. Код ошибки=5025
2017.08.28 17:36:16.985 Demo_FolderDelete EURUSD.e,H4: Не удалось очистить папку nonempty. Код ошибки=5026

Puis sans corrections je l'ai exécuté sur mt5 et bizarrement la mention du dossier MQL4 a été ignorée. Le dossier et le fichier ont été créés dans le dossier MQL5. A partir de là, tout est identique à celui de MT4. Un fichier non fermé n'est pas supprimé...

2017.08.28 17:50:45.328 Demo_FolderDelete (CADJPY,H4)   Не удалось очистить папку nonempty. Код ошибки=5025
2017.08.28 17:50:47.958 Demo_FolderDelete (CADJPY,H4)   Не удалось удалить папку nonempty. Код ошибки=5024
 
Le servicedeck a répondu. Ils ont dit que le dossier doit être fermé après sa création. Mais je le ferme et le problème reste... Hélas...(
 
Alexey Viktorov:

Tout ceci est étrange. J'ai remarqué les chemins du dossier MQL4 et j'ai recompilé le code en .ex4 et, étrangement, le code a fonctionné sans erreur. J'ai supprimé la fermeture du fichier et j'ai obtenu

Puis sans corrections je l'ai lancé sur mt5 et bizarrement la mention du dossier MQL4 a été ignorée. Le dossier et le fichier ont été créés dans le dossier MQL5. A partir de là, tout est identique à celui de MT4. Un fichier non fermé n'est pas supprimé...

Je veux dire, vous avez créé un conseiller expert à partir d'un script et essayé de l'exécuter ?

 
Реter Konow:
Mais je le ferme et le problème reste... Hélas...(
Et essayez FILE_COMMON partout