Errores, fallos, preguntas - página 1161

 
joo:

v4.3, firmware personalizado.

La ventana principal está en posición horizontal, los otros diálogos (órdenes) están en posición vertical. Molesto cambio incontrolable entre la ventana principal y los diálogos.

vamos.... ni siquiera un software especializado como Smart Rotator.... ayuda

¡es curioso, pero si se establece el paisaje a la fuerza en Smart Rotator para el terminal, todas las ventanas se convierten en paisaje. pero quiero retrato! - Pongo el modo retrato para el terminal, ¿y qué? - jejeje... todavía algunas ventanas son apaisadas y otras retrato.

 

Un fallo en el meta-editor.

Supongamos que tenemos una función Obj() que devuelve un puntero a un objeto:

class CObject {   public:     int value; }; CObject object;

CObject* Obj() { return GetPointer(object); }

Ahora, si nos referimos al objeto directamente a través de la función:Obj().valor = 10, no aparece ninguna lista emergente de miembros y métodos de la clase después de introducir un punto.

 
meat:

La clase CA rray no es una panacea, dado que MQL no soporta patrones de clase. Nuestro array no está necesariamente formado por tipos simples, y crear una estructura completa de la descendencia CArray para cada nueva clase en un programa no es muy interesante. Basta con mirar cuántas líneas de código tiene cada archivo descendiente de CArray (ArrayInt.mqh, ArrayDouble.mqh etc.)

Y la forma de organizar la estructura del programa es de importancia secundaria. No nos desviemos del tema, la cuestión es que si hay algún parámetro que se pueda cambiar (en este caso es reserve_size), debería ser posible conseguirlo.

Los tipos complejos se heredan de CObject y se empaquetan de forma segura en CArrayObj.

reserve_size - rompe el paradigma de la programación económica. Sólo existe para los principiantes y no debe existir en absoluto en las lenguas normales.

 
C-4:

reserve_size - viola el paradigma de la programación frugal. Sólo existe para los principiantes y no debería existir en absoluto en los idiomas normales.

Tienes un extraño paradigma. La reserva está precisamente pensada para economizar recursos, reduciendo el número de reasignaciones de memoria y el movimiento de datos (y estas son operaciones bastante caras). Y es un desarrollador de código el que debe gestionar este parámetro, porque sólo él sabe de antemano cómo va a utilizar la memoria su programa. Y no tiene nada que ver con el lenguaje, porque un array es un array, requiere memoria en todas partes.

 
meat:

Este es un paradigma extraño para ti. La reserva está pensada precisamente para economizar recursos, reduciendo el número de reasignaciones de memoria y de transferencias de datos (y éstas son operaciones bastante caras). Y es un desarrollador de código quien debe gestionar este parámetro, porque sólo él sabe de antemano cómo va a utilizar la memoria su programa. Y no tiene nada que ver con el lenguaje, porque un array es un array tal cual, requiere memoria por todas partes.

Así que ya has respondido a tu propia pregunta:

Es el desarrollador de código quien debe gestionar este parámetro, ya que sólo él sabe de antemano cómo utilizará la memoria su programa. No tiene nada que ver con la lengua.

No tiene nada que ver con los medios lingüísticos y, por tanto, debe resolverse a un nivel superior, el del usuario. Así que resuelve tu tarea con las clases CArray* creadas especialmente para estas tareas, que por cierto, manejan esta tarea brillantemente y como si hubieran sido creadas para ello.

 
meat:

Tienes un extraño paradigma. La redundancia está precisamente diseñada para utilizar los recursos con moderación, reduciendo el número de reasignaciones de memoria y transferencias de datos (que son operaciones bastante costosas)...

void TestFoo()
{
  CArrayObj listObj;
  listObj.Resize(100);
  for(int i = 0; i < 100; i++)
     listObj.Add(new CObject());
  int count = CountObj(listObj);
}

void CountObj(CArrayObj* obj)
{
   return obj.Size();
}
Código de super ahorro. No se produce ninguna reasignación de memoria, ya que el número de elementos se conoce de antemano. No se pasan arrays sino punteros a ellos. La velocidad es increíblemente rápida y no hay necesidad en reserve_size. ¿Qué no le gusta de esta solución?
 
C-4:
Código de super ahorro. No hay ninguna reasignación de memoria, ya que el número de elementos se conoce de antemano. No se pasan arrays sino punteros a ellos. La velocidad es increíblemente rápida, y no necesitamos ningún reserv_size. ¿Qué es lo que no le gusta de esta solución?

Eh, si fuera tan sencillo... En el mundo real, el número de elementos no suele conocerse de antemano. Y lo que es más, este número cambia dinámicamente. Así que tu ejemplo simplificado de "Hola mundo" no tiene sentido. Se puede sustituir con sólo dos líneas:

CObject listObj[100];
int count = ArraySize(listObj);

Bueno, ¿qué sentido tiene toda esta basura? Si tú personalmente no utilizas el parámetro reserve_size, eres bienvenido. Pero no saques la conclusión de que todos los demás son tontos o novatos. Tal vez no entiendas algo. En los contenedores STL estándar, diseñados para trabajar con arrays (vector, cadena, etc.), métodos como la reserva y la capacidad están siempre presentes también.

 
joo:

vamos.... ni siquiera un software especializado como Smart Rotator.... ayuda

Es curioso, pero si fuerzo el modo apaisado en Smart Rotator para el terminal, todas las ventanas se vuelven apaisadas. - Pongo el terminal en modo retrato, ¿y qué? - jejeje... todavía algunas ventanas son apaisadas y otras retrato.

funciona bien en el firmware de serie (al menos como se esperaba)
 

En la última versión, la búsqueda en el MetaEditor (el cuadro de la esquina superior derecha) ya no funciona correctamente. Cuando introduzco la palabra que busco allí, la sustituye automáticamente por alguna frase similar, sacada de no sé dónde y sin motivo. Como resultado, no puede encontrar nada en su código. Por ejemplo, intento encontrar una variable llamada "ERROR_VALUE" pero obtengo "error_value 7" en su lugar.

Pregunta: ¿Qué pasa? ¿De dónde viene esta basura de izquierdas en la línea de búsqueda y cómo sacarla?

 
meat:

En la última versión, la búsqueda en el MetaEditor (el cuadro en la esquina superior derecha) ya no funciona correctamente. Cuando introduzco la palabra que busco allí, la sustituye automáticamente por alguna frase similar, sacada de no sé dónde y sin motivo. Como resultado, no puede encontrar nada en su código. Por ejemplo, intento encontrar una variable llamada "ERROR_VALUE" pero obtengo "error_value 7" en la línea de búsqueda en su lugar.

Pregunta: ¿Qué pasa? ¿De dónde viene esta basura de izquierdas en la línea de búsqueda y cómo sacarla?

Limpia el teclado.