Errores, fallos, preguntas - página 727

 
Renat:

Se planteóuna pregunta sobre FileReadArray, y en la explicación señalé que tiene una función que lee el tipo de datos equivocado.

De ahí la pregunta: ¿cómo encaja esta característica con la seguridad lingüística?

Si está bien, ¿por qué no hacer una función estándar para convertir un campo de bits al tipo correcto?

En general, o bien se ponen las cosas en orden y se elimina esta característica o se deja que la gente implemente la aritmética larga.

He aquí un ejemplo de esta función a través de un archivo de borrado:

double arr[]; ulong arr1[]; 
//+------------------------------------------------------------------+
void OnStart()
  {   
   ArrayResize(arr,1); arr[0]=123.2564;
   WriteArrayFile();
   ReadArrayFile();
   Print(arr1[0]);
  }
//+------------------------------------------------------------------+
void WriteArrayFile(string folder="Calculator")
  {
   int han=FileOpen(folder+".dat",FILE_WRITE|FILE_BIN);
   if(han!=INVALID_HANDLE)
     {      
      FileWriteArray(han,arr);              
      FileClose(han);
     }
  }
//+------------------------------------------------------------------+
void ReadArrayFile(string folder="Calculator")
  {
   int han=FileOpen(folder+".dat",FILE_READ|FILE_BIN);
   if(han!=INVALID_HANDLE)
     {      
      FileReadArray(han,arr1);             
      FileClose(han);
     }
  }
//+------------------------------------------------------------------+
 
Paranoia detectada.
 
TheXpert:
Paranoia detectada.

Deberías pensarlo bien.

De hecho, soy partidario de considerarlo seguro y hacer su contrapartida sin usar un archivo, pero directamente.

Pero si MQ lo reconoce como inseguro, entonces también debería ser eliminado de la función.

ZZZY Por cierto tal vez me equivoque en algo hoy, no he contestado a dos preguntas, ilumíname, señala con el dedo dónde está la estupidez.

 
Urain:

Aquí hay un ejemplo de este arreglo a través de un archivo con la limpieza del tornillo:


¿Por qué revisar un archivo? Es más fácil que eso. Lea sobre la conversión de tipos de datos de estructuras simples
 
o así
 
Renat:
En las pruebas sobre cruces hay una modelización precisa y otras tasas para la conversión correcta de los beneficios y los requisitos de margen.
Pruebe a ejecutar la visualización y comprenderá inmediatamente la cantidad de cálculos basados en el número de caracteres de fondo en el marketwatch.
Puedo entenderlo todo, pero una diferencia de 13,7 veces en la velocidad... Bueno, 2x está bien. Y la alegría de cachorro de la apertura del precio probando la velocidad en las mayores ha sido sustituida por el desánimo en los cruces. Y en lugar de usar 30 agentes remotos nativos, tendremos que sobornar a los cludes de nuevo... ¡Abismo!
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Urain:

Desarrolla el pensamiento.

De hecho, soy partidario de considerarlo seguro y hacer su contrapartida sin usar un archivo, pero directamente.

Pero si MQ lo reconoce como inseguro, también debería ser eliminado de la función.

ZZZY Por cierto tal vez estoy realmente balbuceando hoy algo no está bien, no he respondido a dos preguntas, que realmente me ilumine, señalar el dedo donde tonto.

El archivo en sí es impersonal. No se sabe de antemano de qué manera se escribió este archivo. En otras palabras, la funcionalidad descrita anteriormente no puede ser prohibida. Por supuesto, se puede detectar organolépticamente un archivo de texto puro, y hay algunos problemas con las codificaciones Unicode y Ansi.

Así que puedes leer cualquier archivo a voluntad. Y no llevará a ninguna situación peligrosa, porque los tamaños de las lecturas (y también de las escrituras) están controlados. No podrás romper la pila. No podrá obtener una dirección en la memoria del proceso de ninguna manera.

 
muallch:
Puedo entenderlo, pero una diferencia de velocidad de 13,7 veces... Bueno, 2x está bien. Y la alegría de cachorro de probar la velocidad en los precios de apertura en las grandes ligas ha sido sustituida por el desánimo en los cruces. Y en lugar de usar 30 agentes remotos nativos, tendremos que sobornar a los cludes de nuevo... ¡Abismo!
Estamos estudiando esta cuestión. Las pruebas de precios de apertura en los cruces se acelerarán.
 
stringo:

El archivo en sí es un archivo impersonal. No se sabe de antemano cómo se grabó el archivo. En otras palabras, la funcionalidad descrita anteriormente no puede ser prohibida. Por supuesto, es posible detectar organolépticamente un archivo de texto puro, y hay matices con las codificaciones Unicode y Ansi.

Así podrás leer cualquier archivo a voluntad. Y no se producirá ninguna situación peligrosa, porque los tamaños de las lecturas (y también de las escrituras) están controlados. No podrás romper la pila. No se puede obtener una dirección en la memoria del proceso de ninguna manera.

Entonces no veo ninguna razón para no introducir una función de lectura directa sin conversión de tipo, ala

double a=123.2564; ulong b;

b=Byte(a,TYPE_ULONG);
Print(b);
//--- результат 4638373815016729713

Póngalo en una función y todo estará a salvo.

 
Urain:

Entonces no veo ninguna razón para no introducir una función de lectura directa de datos sin conversión de tipos, ala

Ponlo en una función y todo estará a salvo.

struct __double { double v; }

struct __long { long v; }

__double a; __long b;

a.v=123.456;

b=a;

b.v=4638373815016729713;

no es difícil.

+ leer además de los enlaces superiores https://www.mql5.com/ru/articles/364


Y la conversión de un tipo a otro puede hacerse mediante macros o funciones.

pero no hay nada realmente complicado en ello.

Избавляемся от балласта самодельных DLL
Избавляемся от балласта самодельных DLL
  • 2012.01.31
  • o_O
  • www.mql5.com
Если MQL5-программисту недостаточно функционала языка, он вынужден обращаться к дополнительным инструментам. Для этого приходится использовать другой язык программирования и создавать промежуточную DLL. В MQL5 имеется механизм представления разных типов данных с помощью структур и передачи их в API, но к сожалению, MQL5 не отвечает нам на вопрос о том, как вытянуть данные из принятого указателя. В данной статье мы поставим точку в этом вопросе и покажем простые механизмы обмена сложными типами данных и работе с ними.