Errores, fallos, preguntas - página 2066

 
fxsaber:

Este parece ser un comportamiento erróneo para la lengua, ya que limita las posibilidades.

Necesito definir un campo const como una estructura. Pensé que el operador de copia funcionaría, pero el compilador quiere un constructor en su lugar, porque la sintaxis es similar. Pero es un error.

Es correcto porque no es ambiguo (siempre es un constructor en la lista de inicialización, no un operador), es incorrecto en otro sentido:

struct S {
        S()                        { Print( __FUNCSIG__ ); }
        void operator=( const S& ) { Print( __FUNCSIG__ ); }
};
void OnStart()
{
        S s;
        S s1 = s;

}

Resultado:

void S::S() (1)
void S::S() (2)
void S::operator=(const S&) (3)

mientras que C++ no emite las líneas (2) y (3), y por tanto no sustituye el constructor de copia que falta por una simbiosis del constructor por defecto y el operador de asignación

 

Si a un objeto BMP se le ha borrado el recurso y se ha vuelto a crear, el objeto BMP ya no ve su recurso. Esto es un error. Ahora tienes que borrar el objeto y volver a crearlo.

 
fxsaber:

Si a un objeto BMP se le ha borrado el recurso y se ha vuelto a crear, el objeto BMP ya no ve su recurso. Esto es un error. Ahora tienes que borrar el objeto y volver a crearlo.

¿Puede mostrarnos el código? Por qué hay que borrar un recurso, se puede sobrescribir/modificar sin borrarlo.
 

Situación:

Una posición de mercado de un Asesor Experto de terceros ha sido seleccionada con éxito por OrderSelect(ticketNumber,SELECT_BY_TICKET) y se realiza un intento de cierre en el bucle (la selección de la orden en el ticket se realizó antes del bucle de intento de cierre).


Me da un error:

2017.11.10 06:00:33.806 ExpertName EURCAD,H1: unknown ticket 1846978258 for OrderClose function

El billete está bien.


Es natural que nuestro EA pueda cerrar esa orden de forma independiente, por lo que

en cada iteración del bucle, comprobamos

if(OrderCloseTime()!=0) break;


que no da el resultado deseado y el mensaje sobre el número de billete equivocado se muestra las 30 veces del ciclo.

¿Una mala mano o es un error con la pérdida de una orden seleccionada?

¿O el número de error no refleja exactamente la situación/problema?


Actualización:

He descubierto que la posición se cierra no por el EA nativo, sino por el que nosotros cerramos.

Sin embargo, antes del error cíclico 4108 obtenemos un error único 3 (aunque antes de que se registre el error 3 la orden se ha cerrado).

 
Kirill Belousov:

Naturalmente, el EA nativo podría cerrar esta orden de forma independiente, por lo que

En cada iteración del bucle se realiza la comprobación.

También tenemos que hacer OrderSelect.

 
Andrey Barinov:
¿Puede mostrarme el código? Por qué borrar el recurso, puedes volver a descargarlo / modificarlo sin borrarlo.

Recargado sin borrar sin problemas, por supuesto. Después de la eliminación, los problemas.

#define  WIDTH 100
#define  ARGB(a,r,g,b)  ((uchar(a)<<24)|(uchar(r)<<16)|(uchar(g)<<8)|uchar(b))

bool Set( const string Name, const uint &Data[], const uint Width )
{
  return(ResourceCreate(Name, Data, Width, (Width == 0) ? ArraySize(Data) : ArraySize(Data) / Width, 0, 0, Width, COLOR_FORMAT_ARGB_NORMALIZE));
}

void Test( const string Name )  
{
  static uint Data[WIDTH * WIDTH];
  
  for (uchar i = 0; i < 100; i++)
  {
    ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
    ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
    
    Set(Name, Data, WIDTH);
    
    ChartRedraw();
    
    Sleep(50);
  }
  
  ResourceFree(Name);  
}

void OnStart()
{  
  const string ObjName = __FILE__;
  const string Name = "::" + ObjName;
  
  ObjectCreate(0, ObjName, OBJ_BITMAP_LABEL, 0, 0, 0);
  ObjectSetString(0, ObjName, OBJPROP_BMPFILE, Name);
  
  // Видна работа
  Test(Name);
  
  // Нет результата на экране
  Test(Name);
  
  ObjectDelete(0, ObjName);
}
 

No hay mensajes de

Mensajes del sistema


No hay mensajes en absoluto. Incluyendo , mensaje de producto, venta de producto, comentarios del moderador, mensaje de validación de producto.

 
Vladislav Andruschenko:

No hay mensajes de

Mensajes del sistema


Ninguno. incluyendo , mensaje de producto, venta de producto, notas del moderador, mensaje de validación de producto.

Buenas tardes.

El error fue corregido, hay que esperar la actualización del sitio.

Le pedimos disculpas por las molestias.

 
Julia Test:

Buenas tardes.

El error ha sido corregido, hay que esperar a que se actualice el sitio.

Disculpe las molestias.


Gracias. Ya he respondido a la SD. :-) esperando...

P.D. Nunca ha estado tan tranquilo antes de .... silencio directo .........

 
fxsaber:

También hay que hacer OrderSelect.

¿Podemos tener detalles de por qué es esto?

Hemos seleccionado con éxito un pedido en un billete.

Hemos enviado una orden de cierre en la iteración 1.

En esta iteración #1, recibimos el error 3 (Parámetros comerciales no válidos.) No obstante, la orden se cerró. ¿Cómo se cerró?

Entonces obtenemos el error 4108 en la iteración 2. No podemos cerrarlo usando OrderCloseTime!=0.


¿En qué momento, según la documentación, se pierde la conexión con el orden seleccionado por el billete?

¿No es este un caso en el que después de enviar el comando de cierre la orden debería haberse bloqueado y debería haberse generado el error 139 en lugar del 4108?