Errores, fallos, preguntas - página 921

 
sergeev:

- ¿Admite el corredor establecer una orden con tiempo?

Para ello, pulse F9 y compruebe si se puede ajustar la hora.


Todo funciona aquí, es decir, todas las órdenes pendientes se ejecutan sin errores.
 
Hola, tengo esta pregunta - Compré un EA instalado en mi ordenador, luego pedí un servidor VPS e instalé el mismo EA. Al final he rechazado el servidor alquilado porque el broker tiene un servicio gratuito, pero no puedo instalar el Expert Advisor por tercera vez (en tres hardware). ¿Qué puedo hacer? ¿Puedo dejar un servidor por otro? ¿Dónde ir? Gracias.
 

Dos preguntas sobre el trabajo con archivos.

1. Hay un archivo de texto que contiene cadenas en varios idiomas (incluyendo japonés, árabe, etc.). En consecuencia, la codificación del archivo es UTF8. Los datos del archivo se escriben como "Alias=Traducción", donde el alias está siempre en inglés y la traducción es cualquier otro idioma. Estaba seguro de que había que utilizar FILE_UNICODE durante la lectura. Pero si abres el archivo así:

int fileHandle = FileOpen(fileName, FILE_READ|FILE_TXT|FILE_UNICODE, 0, CP_UTF8);

obtenemos un conjunto de jeroglíficos sin sentido al leer las líneas. Pero si lo abres así:

int fileHandle = FileOpen(fileName, FILE_READ|FILE_TXT|FILE_ANSI, 0, CP_UTF8);

entonces lee y posteriormente emite con normalidad (lo he comprobado en inglés, ruso, ucraniano, japonés y árabe).

Pregunta: ¿por qué es necesario utilizar la bandera FILE_ANSI? Al fin y al cabo, ANSI es para caracteres de un solo byte y UTF8 codificación de caracteres unicode...


2. Hay una clase que tiene ese método:

string CTranslator::getTranslate(string str) {
//---
   int fileHandle = FileOpen(filename, FILE_READ|FILE_TXT|FILE_ANSI, 0, CP_UTF8);
   
   if ( fileHandle == INVALID_HANDLE ) {
      return(str);
   }
//---
   string temp, alias, traslation;
   int delimiterPos;
      
   for ( ; !FileIsEnding(fileHandle); ) {
      temp = FileReadString(fileHandle);
      delimiterPos = StringFind(temp, "=");
      alias = StringSubstr(temp, 0, delimiterPos);
      
      if ( StringCompare(str, alias, false) == 0 ) {
         traslation = StringSubstr(temp, delimiterPos+1);
          
         return(traslation);
      }   
   }
   FileClose(fileHandle);
//---
   return(str);
}

El nombre del archivo es una propiedad y se le da un valor al inicializar un objeto. Es decir, al llamar al método, abrimos el archivo, leemos línea por línea, y en cuanto encontramos la cadena coincidente, devolvemos su subcadena. Si el archivo no está abierto o no hay ninguna cadena que coincida, devolvemos la cadena que se introdujo en la entrada.

Si llamamos al método una vez, todo funciona. Pero si se llama varias veces en una fila - que funciona sólo la primera vez, mientras que el segundo y siguientes intentos de abrir el archivo - INVALID_HANDLE (comprobado con la impresión). ¿Cuál puede ser el problema?

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы - Документация по MQL5
 
Rone:

2. Hay una clase que tiene este método:

El nombre del archivo es una propiedad y se le asigna un valor durante la inicialización del objeto. Es decir, cuando se llama al método, abrimos el archivo, lo leemos línea por línea, y en cuanto encontramos una línea adecuada, devolvemos su subcadena. Si el archivo no está abierto o no hay ninguna cadena que coincida, devolvemos la cadena que se introdujo en la entrada.

Si llamamos al método una vez, todo funciona. Pero si se llama varias veces en una fila - que funciona sólo la primera vez, mientras que el segundo y siguientes intentos de abrir el archivo - INVALID_HANDLE (comprobado con la impresión). ¿Cuál puede ser el problema?

Esta podría ser la razón:

      if ( StringCompare(str, alias, false) == 0 ) {
         traslation = StringSubstr(temp, delimiterPos+1);
          
         return(traslation);
      }   
 
Rone:

...

2. Hay una clase que tiene un método como este:

El nombre del archivo es una propiedad y se le asigna un valor cuando se inicializa el objeto. Es decir, cuando se llama al método, abrimos el archivo, lo leemos línea por línea, y en cuanto encontramos una línea adecuada, devolvemos su subcadena. Si el archivo no está abierto o no hay ninguna cadena que coincida, devolvemos la cadena que se introdujo en la entrada.

Si llamamos al método una vez, todo funciona. Pero si se llama varias veces en una fila - que funciona sólo la primera vez, mientras que el segundo y siguientes intentos de abrir el archivo - INVALID_HANDLE (comprobado con la impresión). ¿Cuál puede ser el problema?

¿Tal vez porque si "devuelve la cadena que se introdujo en la entrada" el archivo no se cierra?
 

tal vez funcione allí

Pero, ¿tiene su empresa de corretaje una opción de fecha?

 
Contender:

Tal vez esa sea la razón:

...

tol64

...


Gracias por las rápidas respuestas.

Lo siento, lo pasé por alto, salí a fumar y lo conseguí.

Aquí está:

      if ( StringCompare(str, alias, false) == 0 ) {
         traslation = StringSubstr(temp, delimiterPos+1);
         FileClose(fileHandle);

         return(traslation);
      }

Ya funciona. Pero la primera pregunta sigue en pie.

 
sergeev:

tal vez ahí es donde funciona.

¿pero su empresa de corretaje tiene una opción de fecha?

Hace una semana que no tengo noticias claras de mi agente de bolsa... rrrrrrr....

 
Rone:


Gracias por sus rápidas respuestas.

Lo siento, lo pasé por alto, salí a fumar y lo conseguí.

Aquí está:

Ya funciona. Pero la primera pregunta sigue en pie.

Sobre la primera pregunta.

Si el archivo se abre como unicode, no se realiza ninguna conversión (es decir, su CP_UTF8 simplemente se ignora), los datos se leen "tal cual"

La página de códigos funciona al convertir a texto interno Unicode ( datos de tipo cadena) cuando se lee de un archivo de texto abierto en modo ANSI.

 
Nikos52:

Hace una semana que no tengo noticias claras de mi agente de bolsa... rrrrrr....


¿está roto el F9 de su terminal de corretaje?