Errores, fallos, preguntas - página 2748

 
Sergey Dzyublik:

Es mucho texto, no lo he leído todo.
Pero si tienes algo que funciona en la versión de depuración y sin embargo no funciona en la versión de lanzamiento, o viceversa, entonces comprueba si todas las variables y campos, especialmente en la clase/estructura, han sido inicializados.

Los datos que había que inicializar los he inicializado. Y si algún dato aleatorio se encuentra allí, causará un error en el propio programa (por ejemplo, Array out of range o Invalid pointer). Al menos, no afectará al funcionamiento del depurador. Y ayuda a encontrar esos fallos.

 
Mihail Matkovskij:

Tal vez tengas este defecto:

(no solucionado por ME5(build 2390)) ** (nuevo) Depurador, StepInto (F11) y los puntos de interrupción instalados no funcionan.

 
TheXpert:
Tal vez tu estructura de archivos es tan compleja que el depurador no puede asociar un punto de interrupción, entonces es problema del depurador.

Creo que la estructura de los archivos de los elementos estándar de la interfaz de usuario que utilizo en mi proyecto es aún más compleja que mi trabajo. Tendría que trabajar mucho para hacer algo así. Pero tal como está, tómalo y úsalo, como dicen. Si lo pones todo junto, como en mi caso. Entonces, efectivamente, se complica algo. Pero para los programas de carreras es bastante normal.

 
fxsaber:

Inicialmente, esto se planteó a.


En una determinada fase, no sólo es importante la parte relativa del tiempo empleado, sino también la parte absoluta.

Acostumbrarse a asignar variables en C durante un tiempo es un buen hábito.

En la primera función personalizada, la estructura MqlTick de entrada se pasa directamente a la función MQL, sin ninguna asignación de memoria.
Esta entrada se llama mala codificación.

bool GetCurrentTick1( MqlTick &Tick )
{
  return(SymbolInfoTick(_Symbol, Tick));
}

En el segundo ejemplo, se crea la variable CurrentTick; se le asigna la memoria.
Y esta entrada se considera más correcta.
Como la memoria ya está asignada, los datos de entrada se procesan más rápidamente, sin costes innecesarios.

bool GetCurrentTick2( MqlTick &Tick, const bool NewTick = false )
{
  static MqlTick CurrentTick;
  
  if (NewTick)
    SymbolInfoTick(_Symbol, CurrentTick);
  
  Tick = CurrentTick;
  
  return(true);
}
 
Roman:

Si consigues un poco más de C, te acostumbrarás a asignar variables.

Siga sus propios consejos y podrá tener al menos una mínima idea de la asignación.
 
Roman:

...

Y ese registro se considera más correcto.

¿Contado por quién? Al menos podrías darnos las medidas de velocidad primero.

 
Alexey Navoykov:

¿Quién está contando? Al menos podrías darnos algunas medidas de velocidad para empezar.

Demasiada atención para un troll.

 
TheXpert:
Si sigues tus propios consejos, puede que consigas al menos un atisbo de asignación.

Por asignación, me refiero a la asignación de memoria.
No en ese sentido literal como una clase.
Una función definida por el usuario tiene su propio ámbito.

 
Alexey Navoykov:

¿Quién cuenta? Al menos deberías dar algunas medidas de velocidad para empezar.

En la página anterior fxsaber dio las medidas.
He explicado por qué ocurre así.
Asigne siempre memoria, de forma estática o dinámica.

 
Sergey Dzyublik:

Tal vez tengas este defecto:

(no solucionado por ME5(build 2390)) ** El depurador (nuevo), StepInto (F11) y los puntos de interrupción instalados no funcionan.

Es posible... He probado el método int CCheckGroup::itemCheckState(const string item) que he descrito anteriormente. Y al principio el depurador sí va allí. Pero una vez que sale y ya está, el depurador no lo ve más y no funcionan los puntos de ruptura ni el "Paso con enter". Bueno, tendremos que conformarnos con Print() y Alert() temporalmente.