Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Hasta donde yo sé, si no se han hecho cambios en el archivo usando funciones de archivo (por ejemplo, FileWrite()), no hay necesidad de cerrarlo. La función FileOpen() simplemente crea un nuevo archivo y esta operación no requiere el cierre del archivo (la documentación de esta función, tampoco dice que el archivo necesita ser cerrado después de la creación).
Oy-lee! Cuentacuentos https://docs.mql4.com/ru/files/fileopen
//--- la forma correcta de trabajar en la "caja de arena de archivos"
ResetLastError();
filehandle=FileOpen("fractales.csv",FILE_WRITE|FILE_CSV);
if(filehandle!=INVALID_HANDLE)
{
FileWrite(filehandle,TimeCurrent(),Symbol(),EnumToString(ENUM_TIMEFRAMES(_Period));
FileClose(filehandle);
Print("FileOpen OK");
}
si noPri
Oy-lee! Cuentacuentos https://docs.mql4.com/ru/files/fileopen
¿Cuál es la contradicción con lo que he dicho?
Dije, -
Retag Konow:
Hasta donde yo sé, si no se han hecho cambios en el archivo usando funciones de archivo (por ejemplo, FileWrite()), no hay necesidad de cerrarlo. La función FileOpen() sólo crea un nuevo archivo y esta operación no requiere que se cierre el archivo (la documentación de esta función tampoco dice que el archivo deba cerrarse después de la creación).
Pero en su ejemplo la función FileWrite() se utiliza inmediatamente después de la creación del archivo. Y luego se utiliza FileClose(filehandle);
Además, en el código del script anterior añadí un cierre explícito, pero eso no solucionó nada...
Exactamente así. Cuando intento borrar una carpeta que ya contiene subcarpetas y archivos, primero borro los archivos. Sólo quedan las subcarpetas. Intento limpiarlas usando FolderClean() y luego llamo a FolderDelete(). Sin embargo, el resultado es que aquellas subcarpetas que estaban vacías se borran bien, pero si había más subcarpetas dentro de las subcarpetas no se borran. Después de eso, intento eliminar las carpetas del navegador de archivos en el MetaEditor manualmente, pero el terminal no las elimina y aparece esta ventana:
Hago clic en "Continuar", acepto los cambios, pero la carpeta sigue sin borrarse. Después de cerrar por completo y volver a abrir el terminal, las carpetas que deberían haber sido borradas desaparecen por sí solas o no, pero puedes borrarlas inmediatamente y de forma manual sin la ventana anterior.
Cosas tan extrañas...
He visto este tipo de cosas muchas veces. Me he dado cuenta de que en algún momento la carpeta Files con todas sus subcarpetas y archivos adquiere el atributo de sólo lectura. Deseleccionar esta bandera manualmente no ayuda. Pero reiniciar el terminal siempre ayuda. No pude conseguir que se reprodujera (no lo intenté), así que no lo reporté a la SD.
El error (5022) sólo se produce si se establece FILE_COMMON
Borra la carpeta pero no la elimina
Esta bandera no necesita ser establecida, de lo contrario el archivo será buscado en la carpeta compartida, y el error dice que el nombre del directorio es incorrecto.
Ruta del archivo
"\\MQL4\\Files";
no requiere que se active esta bandera. Así que todo es correcto.
He visto este tipo de cosas varias veces. Descubrí que en algún momento la carpeta Files con todas las subcarpetas y archivos adquiere el atributo de sólo lectura. Deseleccionar esta bandera manualmente no ayuda. Pero reiniciar el terminal siempre ayuda. No pude conseguir que se reprodujera (no lo intenté), así que no lo reporté a la SD.
Esta bandera no necesita ser establecida, de lo contrario el archivo será buscado en la carpeta pública y el error dice que el nombre del directorio es incorrecto.
Tanto con como sin FILE_COMMON - funciona (originalmente al comprobarlo olvidé poner esta bandera en el último if). Con FILE_COMMON se dio a entender que está presente en todas las operaciones
Esta bandera no necesita ser establecida, de lo contrario el archivo será buscado en la carpeta pública, y el error dice que el nombre del directorio es incorrecto.
La ruta del archivo
no requiere que se active esta bandera. Así que todo es correcto.
Esto es extraño. Me fijé en las rutas de las carpetas MQL4 y recompilé el código en .ex4 y, extrañamente, el código funcionó sin errores. Eliminé el cierre del archivo y obtuve
Luego sin correcciones lo ejecuté en mt5 y extrañamente la mención de la carpeta MQL4 fue ignorada. La carpeta y el archivo se han creado en la carpeta MQL5. A partir de aquí todo es igual que en MT4. Un archivo no cerrado no se borra...
Todo esto es extraño. Me fijé en las rutas de las carpetas MQL4 y recompilé el código en .ex4 y, extrañamente, el código funcionó sin errores. Eliminó el cierre del archivo y obtuvo
Luego sin correcciones lo ejecuté en mt5 y extrañamente la mención de la carpeta MQL4 fue ignorada. La carpeta y el archivo se han creado en la carpeta MQL5. A partir de aquí todo es igual que en MT4. Un archivo no cerrado no se borra...
Es decir, ¿has hecho un Asesor Experto a partir de un script y has intentado ejecutarlo?
Pero lo cierro y el problema sigue... Ay...(