Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Por favor, indíqueme cómo obtener correctamente una lista de herramientas en la ventana de pedidos (F9).
Obtengo el número de elementos, pero no puedo obtener exactamente las filas por número, devuelve -1.
#define ID_SYMBOL 0x053E //nombre del carácter a seleccionar
cmhandle ComboBox
Alexey, gracias, la función funciona, pero...
Sólo se necesita la identificación del hilo, porque tengo dos terminales en uso.
Me he librado con la identificación de la cabecera, pero todavía me gustaría saber cómo determinar el ID del hilo de debajo del probador?
Antes de recibir cualquier texto, debe preparar un búfer lo suficientemente grande para recibir el texto........
¡¡¡TEXTO!!!
Al adaptar su función a mis necesidades
se encontró con el hecho de que el buffer de cadena textbuf, declarado localmente en el nivel de la función, se inicializa sólo una vez en la primera llamada,
y se comporta como una variable estática.
¿Quiere comentar esta situación?¡¡¡TEXTO!!!
Al adaptar su función a mis necesidades
se encontró con el hecho de que el buffer de cadena textbuf, declarado localmente en el nivel de la función, se inicializa sólo una vez en la primera llamada,
y se comporta como una variable estática.
¿Podría comentar esta situación?Ya veo lo que quiero decir. Quieres decir que el buffer almacena el valor antiguo obtenido de GetText. Recuerdo que a mí también me sorprendía. Pero es una característica de MQL. En algún lugar del foro, los desarrolladores dijeron que todas las cadenas constantes definidas a nivel del compilador se almacenan permanentemente en la memoria en un lugar separado y no se pierden (se sobrescriben) al salir de la función. Su dirección es inicialmente conocida y no cambia durante la operación del programa. Por lo tanto, al llamar de nuevo a la función, cuando se accede a la misma cadena constante, se toma de la misma dirección. Pero tenemos un texto diferente allí que fue colocado por la función GetText.
Del mismo modo, usted puede hacer sólo Print("Abvgdezijklmnostu") y obtener un texto diferente allí :) Por lo tanto, no se trata de la variable textbuf, sino de una cadena constante. En tiempo de compilación se comprueban todas las cadenas constantes y se colocan en la base de datos, y sólo las cadenas únicas. Si se detectan cadenas idénticas, sólo se crea una instancia de base de datos común para ellas. En consecuencia, si se estropea esta instancia mientras se trabaja, todas las llamadas a dicha cadena desde cualquier parte del programa también devolverán un resultado estropeado.
Si no te gusta, puedes crear un buffer de forma programada:
Entonces no habrá ese problema. No recuerdo si está bien hacer eso. Sin embargo, no obtendrá un error de acceso a la memoria. Deberías probarlo.
Así no se produciría ese problema. Pero ahora no recuerdo si es posible hacerlo así. Me pregunto si no habrá un error de acceso a la memoria... Pruébalo.
En cuanto leí que "255 caracteres no caben en la pantalla y arruinan el aspecto del foro", lo hice.
Pero esta opción no funcionó, la función API no devolvió nada... Por lo tanto, dejé su variante.
......
Muchas gracias de todos modos, por otra respuesta exhaustiva.
En cuanto leí que "255 caracteres no caben en la pantalla y estropean el aspecto del foro", lo hice.
Pero esta opción no funcionó, la función API no devolvió nada... Por eso dejé tu variante.
......
De todas formas, muchas gracias por otra respuesta tan completa.
Es un placer.
Según tengo entendido, la razón es que en este caso la referencia al buffer de texto original perteneciente a la variable no se pasa a la función, sino a su copia, es decir, a un buffer temporal que se crea antes de llamar a la función. Por lo tanto, aunque la función cambie el texto de este búfer, no tiene ningún efecto, ya que el búfer original permanece inalterado. Y la referencia al buffer temporal se pierde cuando la función sale. Una vez tuve problemas para pasar una cadena a la DLL debido a esto. Pero hay una solución. Es necesario pasar un elemento de la matriz de cadenas a la función. En este caso, no se crea ningún búfer intermedio, y la función obtiene una referencia al búfer original.
Esto debería funcionar.
Puedo obtener la longitud normalmente, pero no puedo obtener el texto :-(
Por favor, explique cómo inicializar la cadena correctamente, y en general, ¿es posible implementarlo sin dll externa?
es necesario encontrar un símbolo en la lista de herramientas y seleccionarlo.
Puedo obtener la longitud normalmente, pero no puedo obtener el texto :-(
Por favor, explique cómo inicializar la cadena correctamente, y en general, ¿es posible implementarlo sin dll externa?
es necesario encontrar un símbolo en la lista de herramientas y seleccionarlo.
Sobre la inicialización de la cadena, lo acabo de explicar en un mensaje anterior al compañero lasso. Puede utilizar un elemento de la matriz de cadenas, o simplemente inicializar la variable de cadena con una constante de longitud suficiente. En tu caso, es más fácil utilizar una constante, porque sabes de antemano que el tamaño de la cadena resultante no superará los 78 bytes:
12 bytes (ticker del instrumento) + 2 bytes (coma y espacio) + 64 bytes (nombre completo del instrumento) . Esta es la máxima longitud de cadena posible. Bueno, puedes redondear a 80.
Pero si sólo quieres SELECCIONAR un instrumento específico de la lista, no necesitas obtener su nombre. Sólo tiene que utilizar el mensaje CB_SELESTRING. Allí, como parámetro de cadena, sólo hay que enviar la parte inicial del nombre ("EURUSD,") y encontrará y seleccionará el elemento apropiado de la lista por sí mismo.
El asesor de la API del Robot del Millón de Dólares del futuro próximo: Atrae muchos tratos rentables en la propia terminal... :) y cuando dentro de uno o dos meses un millonario recién llegado intente retirar sus ganancias del broker, descubrirá que no hubo ni una sola operación... pero el período de reembolso para el asesor ha terminado... :))))))))
Chicos, por favor ayúdenme a identificar el mango de los botones de compra/venta en la caja de pedidos. He encontrado el asa de la caja de pedidos:
A continuación, intento determinar la manija del botón (por ejemplo, Comprar), pero obtengo 0 como respuesta.
Lo más interesante es que no encuentro la manija de ningún elemento en el cuadro deEjecución Inmediata. Tampoco encuentro un asidero para la propia Ejecución Inmediata. Aunque WinSpy++ lo ve como un elemento separado y muestra el ID 0xFFFFFF para él.
Por favor, no juzguen estrictamente, soy un principiante.