[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 206

 
Aleksander:

querida... no hay necesidad de escribir en letras tan grandes aquí... podrías romperte los ojos :-)

y esto... Antes de hacer preguntas... ¿has probado a leer la Ayuda en el Metaeditor? ¿Todo?... para empezar... para que no hagas preguntas estúpidas sobre tipos y cosas así....

===

Tipo de operación para la función OrderSend(). Puede ser cualquiera de los siguientes valores:

Constante Valor Descripción
OP_BUY 0 Comprar
OP_VENDER 1 Vender
OP_BUYLIMIT 2 Orden pendiente de Límite de Compra
OP_SELLLIMIT 3 Orden pendiente de VENTA LIMITADA
OP_BUYSTOP 4 Orden pendiente de COMPRA STOP
OP_SELLSTOP 5 Orden pendiente de venta de STOP
Estimado señor... no hay necesidad de ponerse chulo aquí... Si algo te parece una tontería, no te molestes en contestar... Dios quiera que haya gente sin delirios de grandeza... Esta es una sección para novatos y si la gente pregunta sobre algo, significa que no lo entiende... Además: si todo estuviera claro en la Ayuda y en el libro, no estaría aquí.
Ahora vamos al grano: digamos que tenemos 3 órdenes y todas son órdenes de mercado. Entonces con 3 iteraciones no llegaremos al bloque 4 en ninguna de ellas. Y después de la última iteración pasaremos inmediatamente al bloque 5, obviando el bloque 4. El bloque 5 contiene la variable Tip, que se declara en el bloque 4. Pero el bloque 4 no se ejecutó. Así que la variable Tip no está declarada. ¿Así que utilizamos la variable antes de declararla?

 
¿Por qué? El compilador ha asignado espacio de memoria para la variable en la primera pasada... y acceder a él no causará un error...
 
Aleksander:
¿Por qué? El compilador asignó espacio de memoria para la variable durante la primera pasada... y acceder a él no causará un error...


El siguiente punto no está claro: en la primera pasada (suponiendo que las 3 órdenes son de mercado), no llegamos al bloque 4, ya que la condición if(OrderType()<2) se cumple en el bloque 3. Entonces el siguiente iterador continue completa la iteración actual y se salta el bloque 4, que es donde se declara la variable Tip. Significa que la variable Tip no fue declarada durante la primera iteración (es decir, la línea que declara la variable Tip no fue ejecutada)... Y así sucesivamente durante las 3 iteraciones. Es decir, después de la 3ª iteración llegamos al bloque 5, que utiliza la variable Tip, es decir, no fue declarada antes (es decir, tenemos una cadena con su declaración, pero como no hemos llegado al bloque 4, no hemos declarado esta variable...)

 

Me refería al recorrido del compilador por el texto del programa - habiendo encontrado una definición de variable en cualquier punto de una función - el metacompilador declaró esa variable para su uso posterior - a pesar de que no había ninguna referencia real a la inicialización de la variable... - así es el entorno :-)

int start()  {
       int l=1;
       
       if (l == 2) {
          int kk=99;
          kk = 100;
       }
   }
   if (kk != 10) { Print("net kk takoi peremennoi = ", kk); }


Aunque no había ninguna entrada en la condición - el compilador asignó una posición de memoria para la variable... aunque no lo haya inicializado... en Print será = 0

 
Aleksander:

Me refería al recorrido del compilador por el texto del programa - habiendo encontrado una definición de variable en cualquier punto de una función - el metacompilador declaró esa variable para su uso posterior - a pesar de que no había ninguna referencia real a la inicialización de la variable... - así es el entorno :-)


Aunque no había ninguna entrada en la condición - el compilador asignó una ubicación de memoria para la variable... aunque no lo haya inicializado... en Print será = 0



Así que, si lo he entendido bien: el compilador, a diferencia del terminal (a grandes rasgos) no ejecuta bucles, sino que se limita a leer líneas seguidas y a comprobar si hay errores... Es decir, lo principal para ello (que es el criterio de presencia/ausencia de error) es que la línea (posición), donde se utilizó una variable, debe venir DESPUÉS de la línea (posición), donde se declaró esta variable?
 
se podría decir que sí :-) si se hace una declaración por debajo - y se accede a la variable por encima - el compilador generará un error...
 
Aleksander:
se podría decir que sí :-) si se hace una declaración por debajo - y se accede a la variable por encima - el compilador generará un error...

Lo tengo, muchas gracias... ¿Algún consejo sobre las variables de la GV?
 

¿qué pasa con ellos? - global a nivel de terminal?

almacenan algún tiempo en un archivo variable :-) la fecha de acceso, el nombre y el valor de tipo doble
 
PS - y también - indirectamente :-) - puede almacenar hasta 63 letras en un nombre de variable, ya sea en ruso o en inglés...
 
Un consejo, por favor: al crear la función ObjectCreate (al crear una línea de tendencia), obtengo un rayo, que, siguiendo de un punto a otro tiene una continuación en el gráfico sólo hacia el lado derecho.
Razón de la queja: