Mi enfoque. El núcleo es el motor. - página 86

 
Peter, ¿entiendo por el gif de la elipse que el formulario es un lienzo sólido? ¿Y cómo funcionan las listas desplegables? Me interesa el caso de que la lista desplegable supere el tamaño del formulario.
 
Vasiliy Sokolov:

Permítanme decirlo así: a mí mismo no me gustan algunas de las chapuzas de mi solución. Hay que crear objetos MT. Pero, en realidad, es sólo un prejuicio. ¿Qué diferencia hay? No se necesitan más de 20-30 para una transferencia completa.

30*64 caracteres = 1920 caracteres. Esto es suficiente para transferir datos de tablas grandes.

 
Dmitry Fedoseev:
Peter, veo por el gif de la elipse que el formulario es un lienzo continuo... ¿Y cómo funcionan las listas desplegables? Me interesa el caso de que la lista desplegable supere el tamaño del formulario.

Sí, el formulario es un único kanvas. El constructor escribe los nombres del propio lienzo y hace funciones de envoltura para trabajar con él.

Las listas desplegables también funcionan en la zona exterior de la ventana. Esto se implementa.

La lista desplegable es otro kanvas. Aparece y desaparece cuando se pulsa el botón.

 
Vasiliy Sokolov:

Mapeo directo de estructuras a través de la unión a la matriz de bytes, compartida para el acceso global. No sé si esto es técnicamente factible, pero de ser así, la velocidad sería cósmica, ya que no habría que copiar nada en absoluto.

Aceptaré de buen grado esta solución si me da un ejemplo.

 

Tenga cuidado con el intercambio de datos a través de objetos gráficos :-)

De lo contrario, puede hacer que su Asesor Experto se vea fácilmente como "no puede ser optimizado"...

 
Реter Konow:

Mi solución es la mejor opción en las condiciones iniciales.

Qué es una cadena:

  1. No hay tamaño fijo. En consecuencia, es imposible organizar una matriz de cadenas, y acceder a una cadena arbitraria en esa matriz;
  2. Ausencia total de mecanización de datos en las cadenas. Hay que definir un subtipo dinámicamente dentro del análisis de la cadena. Se pierde un tiempo precioso en analizar los tokens necesarios; y si los lexemas contienen errores, la cadena no lo controla de ninguna manera. Se obtiene una cadena y se reza para que sea correcta;
  3. Baja eficiencia de almacenamiento de información por byte. Las cadenas de servicio como "opt=1;cancel=3" utilizan, en el mejor de los casos, 35-40 caracteres (bytes) de los 256 posibles (17%). Para enviar 100 bytes de información hay que formar una cadena de 588 bytes, sobrecargando el canal de comunicación. Si se comprimen los caracteres, se complica mucho el código. Si abrevia los nombres de las variables, sólo ayuda un poco.

Y a pesar de todas estas obviedades, eres como Robin Hood , sigues proclamando lo rápido y preciso que eres, y lo bien que adivinaste la cuerda. No, no lo hice, y todo es muy poco saludable.

No intentes montar tu instinto donde se necesitan conocimientos fundamentales.

 
Vasiliy Sokolov:

Qué es una cadena:

  1. No hay un tamaño fijo. En consecuencia, es imposible organizar una matriz de cadenas, y acceder a una cadena arbitraria en esa matriz;
  2. Ausencia total de datos en la cadena. Hay que definir un subtipo dinámicamente dentro del análisis de la cadena. Se pierde un tiempo precioso en analizar los tokens necesarios; y si los lexemas contienen errores, la cadena no lo controla de ninguna manera. Se obtiene una cadena y se reza para que sea correcta;
  3. Baja eficiencia de almacenamiento de información por byte. Las cadenas de servicio como "opt=1;cancel=3" utilizan, en el mejor de los casos, 35-40 caracteres (bytes) de los 256 posibles (17%). Para enviar 100 bytes de información hay que formar una cadena de 588 bytes, sobrecargando el canal de comunicación. Si se comprimen los caracteres, se complica mucho el código. Si abrevia los nombres de las variables, sólo ayuda un poco.

Y a pesar de todas estas obviedades, eres como Robin Hood , sigues proclamando lo rápido y preciso que eres, y lo bien que adivinaste la cuerda. No, no lo hice, y todo es muy poco saludable.

No intentes montar tu instinto donde necesitas conocer los fundamentos.

Vasily, ¿no crees que los desarrolladores de MT tuvieron en cuenta los problemas de las cadenas al conservar la descripción de los objetos de MT?

Es mucho más genial subirse a los conocimientos fundamentales de otra persona y utilizar su intuición para lograr aún más.

 
Реter Konow:

Vasiliy, ¿no crees que los desarrolladores de MT tuvieron en cuenta los problemas de las cadenas, al almacenar la descripción de los objetos de MT?

Peter, cada algoritmo de almacenamiento de datos tiene sus puntos débiles y fuertes. Los desarrolladores han tenido en cuenta muchas cosas, y sin duda son buenas, pero fundamentalmente las cuerdas siempre seguirán siendo cuerdas.

 
Vasiliy Sokolov:

Peter, cada algoritmo de almacenamiento de datos tiene sus puntos débiles y fuertes. Los desarrolladores, por supuesto, tuvieron en cuenta muchas cosas, y sin duda son buenas, pero fundamentalmente, las cadenas siempre seguirán siendo cadenas.

Vasily, si la práctica demuestra que mi solución es defectuosa, la abandonaré. Y tomaré la solución de Nikolai. Si también es malo, volveré a OnChartEvent() y diré que no se puede hacer nada.

Sin embargo, hasta el momento no hay razón para creer que la aplicación de mi solución vaya a quedar coja.

Pronto lo sabremos.

 
z.s. En concreto, sobre el tema del almacenamiento de cadenas en objetos MT, hay un fallo extraño. Si comienza a comprimir los datos y utiliza caracteres no imprimibles en el nombre del objeto, en algunos casos no podrá acceder a este objeto. Es probable que el fallo siga existiendo porque es muy específico y no hay mucha gente que lo conozca, pero aun así puede que te tropieces con él.