Función - Método para ordenar una matriz de estructuras. Premio 10$ - página 7

 
Artyom Trishkin:

1) Para ti son un par de docenas de líneas oscuras.
Pero para mí significa docenas de días de trabajo, que se dedicaron por completo a la localización de los problemas detectados, a su reproducción, a la descripción, a la búsqueda de soluciones, y no se olvide de volver a probar al lanzar una nueva compilación y un informe, para que no se perdiera nada...


2) Sobre la petición de mejoras:

Bichos, errores, preguntas

Sergey Dzyublik, 2019.05.23 13:52

Sugerencias:
"Permitir que la función ArrayCopy copie clases y estructuras "complejas", de forma similar a como las estructuras proporcionan una funcionalidad de copia profunda para cualquier tipo de objeto".


3) Sobre compartir el trabajo que hemos hecho:

Bichos, errores, preguntas

Sergey Dzyublik, 2017.11.05 13:08

Problema: hay un año de autónomos, diferentes trucos no estándar con WinApi etc... útil para la comunidad.
Pero no veo el sentido de gastar tiempo en encontrarlos, procesarlos, ponerlos en kodobase - 0 beneficio.

Sugerencia: proporcionar el botón "Gracias" en kodobase, a través del cual se puede agradecer al autor por el código proporcionado.
El dinero va a la cuenta MQL, a su vez MQ deduce un cierto porcentaje por el servicio prestado.

 
Sergey Dzyublik:

1) Para ti son un par de docenas de cuerdas oscuras.
Pero para mí - docenas de días de trabajo, que se gastan totalmente en la localización de los problemas detectados, su reproducción, la descripción, la búsqueda de soluciones, así no se olvide de volver a probar después de la liberación de una nueva construcción y la creación de informes, lo que no se pierda ...


2) Sobre la petición de mejoras:


3) Sobre compartir sus experiencias:

  1. No diré incomprensible, sino irrelevante. Perdona, pero ¿quién te obliga? ¿Alguien te ordenó hacer todo esto? ¿O por ti mismo? Si lo hiciste tú mismo, por tu propia voluntad, entonces por qué te quejas: nadie te ha obligado.
  2. Eso es bueno. Lo he visto. A veces los desarrolladores ven mejor por qué se prohíbe tal o cual "mejora". Y esto ocurre por una serie de razones que el "usuario" medio no puede adivinar.
  3. Probablemente sea más útil tenerlos cogiendo polvo en una estantería, se desvanecerán en el olvido más rápidamente. Y el nombre es el mismo beneficio.
    En algún lugar del foro ya has escrito "Piensa más profundamente".
 

Quién lo hubiera dudado. Todo lo que sea incómodo de leer se borra.

Sólo unos pocos elegidos pueden hablar. El moderador juzga la corrección de una declaración en función del estado de ánimo y del tiempo.

Hablad con vosotros mismos.

 
Artyom Trishkin:
  1. No diré incomprensible, sino irrelevante. Perdona, pero ¿quién te obliga a hacer esto? ¿Alguien te ordenó hacer todo esto? ¿O por ti mismo? Si lo hiciste tú mismo, por tu propia voluntad, entonces por qué te quejas: nadie te ha obligado.
  2. Eso es bueno. Lo he visto. A veces, los desarrolladores ven mejor por qué se prohíbe tal o cual "mejora". Y esto ocurre por una serie de razones que el "usuario" medio no puede adivinar.
  3. El hecho de que los tengas cogiendo polvo en una estantería probablemente tenga mucho más sentido: se desvanecerán en el olvido más rápidamente. Y el nombre es el mismo beneficio.
    En algún lugar de este foro ya has escrito "Piensa más profundamente".
  1. El hombre intenta hacer de este mundo un lugar mejor y lo consigue, por lo que está agradecido.
  2. -
  3. Sinceramente, si mañana Sergey pone en kodobase contenedores normales, con un iterador, con una macro que proporcione rango para la lógica, ¿qué porcentaje de la comunidad local lo entenderá y apreciará? Y el tiempo que ha matado en él... Por eso estas cosas se promueven por puro entusiasmo, una cucharadita al año. Y aquí los desarrolladores deberían atraer a la gente por un pequeño o no tan pequeño kopeck, y entonces aparecerán contenedores normales y muchas otras cosas interesantes...
 

Vladimir Simakov:

Sinceramente, si mañana Sergey pone en kodobase contenedores normales, con un iterador, con una macro que proporcione rango para la lógica, ¿qué porcentaje de la comunidad local lo entenderá y apreciará? Y el tiempo que ha matado en él... Por eso estas cosas se promueven por puro entusiasmo, una cucharadita al año. Y aquí los desarrolladores tendrían que atraer a la gente con un pequeño o no tan pequeño kopeck, y entonces aparecerán los contenedores normales y pasarán cosas mucho más interesantes...

todo lo que hay y todo funciona - escribir un artículo y ser recompensado, sorprendentemente, Metaquotes es bastante fiel al tema de los artículos

¿o de qué estamos hablando? ¿de una explosión de aplausos?

imho, la "normalidad" de la solución de un programa es algo que no se puede evaluar, se puede escribir sobre la brevedad del código, la legibilidad, el código indio, g...ocode tratando de evaluar una creación, pero, imho, hay un criterio razonable para la evaluación - la relevancia, pero por desgracia, esta evaluación estará disponible después de la publicación.

Que publique gratis en el KB o escriba un artículo, "no que se exhiba como una chica".

 
Igor Makanu:

todo está ahí y todo funciona - escribir un artículo y ser recompensado, sorprendentemente, Metacquotes es bastante fiel a la temática de los artículos

o ¿de qué estamos hablando, de un estallido de aplausos?

imho, la "normalidad" de la solución de un programa es algo que no se puede evaluar, se puede escribir sobre la brevedad del código, la legibilidad, el código indio, g...ocode tratando de evaluar una creación, pero, imho, hay un criterio razonable para la evaluación - la relevancia, pero, por desgracia, esta evaluación estará disponible después de la publicación.

Que publique gratis en el KB o escriba un artículo, "no que se exhiba como una chica".

Deberías leer el hilo desde el principio, parece que estás juzgando por los últimos posts escritos no por Sergei.
 
Igor Makanu:

o ¿de qué estamos hablando, de un estallido de aplausos?

Sobre el hecho de que las personas que respondieron en el tema y con un código de trabajo, fueron acosados en el acto.
Mencionó que pasó un montón de horas escribiendo y probando, por lo que no pone los peluches extra? Bueno, sí, tacaño, debe ser prohibido al infierno.

En general, todo estaba bien con el tema hasta que llegó un moderador con su visión de la situación.

ps: extraño, el segundo mensaje no fue borrado.

 

Llevo leyendo el hilo desde el primer día.

la cuestión se resuelve, pero no como el tópico puede utilizar desde su experiencia

sobre lo de "exprimir el código" - aquí es sencillo - o compartes o no compartes.... , también un moderador "va por libre" - el año pasado vi temas de MQL5 en el hilo ))))

Por si no lo recuerdan, estamos en 2020, y el 99% de las soluciones a los problemas elementales son de libre acceso, mientras que la gente acude al foro para ahorrar tiempo o conseguir los conocimientos que le faltan, pero no para que le iluminen y le cuenten historias con enseñanzas morales... Que es lo que estamos haciendo ahora)))

 

Lamentablemente, ahora incluso los métodos que fxsaber sugirió ya no funcionan.

Y estoy buscando métodos para ordenar un array de estructuras. ¿Alguien tiene alguna variante que funcione?

 
Vladimir Pastushak:

Lamentablemente, ahora incluso los métodos que fxsaber sugirió ya no funcionan.

Y estoy buscando métodos para ordenar un array de estructuras. ¿Alguien tiene alguna variante que funcione?

Personalmente, he escrito una clase CStructWrapper, heredada de CObject (CMyObject es en realidad lo mismo, con campos de depuración adicionales), y para la ordenación utilizo una función estándar.

template <typename T>
class CStructWrapper:public CMyObject
{
protected:
   T  m_tObject;

public:
   CStructWrapper() {};
   CStructWrapper(T & tObj) { m_tObject = tObj; };
   ~CStructWrapper() {};

   // Копирование
   T CopyFrom(const T &tObj) { m_tObject = tObj; return (m_tObject); };
   T operator=(const T &tObj) { return (CopyFrom(tObj)); };
   T CopyFrom(const CStructWrapper<T> &tWObj) { m_tObject = tWObj.GetCoreObject(); return (m_tObject); };
   T operator=(const CStructWrapper<T> &tWObj) { return (CopyFrom(tWObj)); };

   // Возврат объекта   
   T GetCoreObject() const { return(m_tObject); };
};


Si necesito una matriz de estructuras, declaro una clase derivada basada en esta plantilla. En él, declaro una función para comparar los campos necesarios de la estructura. Y luego - uso una clase estándar de un array de objetos con ordenación.

Los objetos creados pueden copiarse directamente desde las estructuras utilizando el operador de asignación. Si es necesario, los copio.