Errores, fallos, preguntas - página 2529

 
A100:

Pregunta sobre los caracteres permitidos en los identificadores. Ejemplo

El resultado:

Recibió un identificador de variable con un espacio.

Si reescribimos el ejemplo así:

entonces podemos formular una contradicción: ¿Cuál es la diferencia entre (1) y (2)?

Bueno, desde el punto de vista de C/C++ hay un error en µl. Se puede insertar cualquier número de espacios/comentarios antes/después del operador ##, los tokens se descompondrán primero y luego comenzará el preprocesador, es decir, ni siquiera verá estos espacios, el hash_hash estándar tiene un ejemplo:

#define  hash_hash # ## #
#define  mkstr(a) #  a
#define  in_between(a) mkstr(a)
#define  join(c, d) in_between(c hash_hash d)
char p[] = join(x, y);    // equivalent tochar p[] = "x ## y";
#define  MACRO( x )              x##:AAA

sólo se pueden utilizar los tokens que juntos forman un token válido.

ZS: algunas personas dicen que c/s++ no es una autoridad para ellos, ¿por qué siguen mencionándolos, y de todos modos es mcl, no ..., tal vez tienen una explicación adecuada?

 
Vict:

¿tal vez tengan la explicación correcta?

Normalmente tienen una explicación: fue diseñado por sabios desarrolladores )
 
Cuando se trabaja con archivos fuente grandes, ME es muy lento - dos archivos de 30 megabytes, incluso el cambio de uno a otro causa lentitud, especialmente si se copia una gran cantidad de código de uno a otro. En general, la edición de este tipo de archivos hace que se trabaje a cámara lenta, lo que resulta agotador.
 
Aleksey Vyazmikin:
Cuando se trabaja con archivos fuente grandes, ME se vuelve muy lento - dos archivos de 30 MB, incluso el cambio de uno a otro causa lentitud, especialmente si se copia una gran cantidad de código de uno a otro. Y, en general, la edición de este tipo de archivos lleva a trabajar a cámara lenta, lo que resulta agotador.

Está claro que 30 MB de texto no son necesarios para el trabajo. Preocúpate una vez, y luego pon estos datos en un incluid.

 
Andrey Khatimlianskii:

Está claro que 30 MB de texto no son necesarios para el trabajo. Tortúralo una vez y luego pon los datos en un incluid.

Los datos son de tipo único y están sujetos a una edición constante; constituyen la base de la modificación de la EA.

 
Los comentarios que no son relevantes para este tema se han movido a "POO, plantillas y macros en mql5, consejos y trucos del oficio".
 
Aleksey Vyazmikin:
Cuando se trabaja con archivos fuente grandes ME se cuelga mucho - dos archivos de 30 MB, incluso el cambio de uno a otro provoca cuelgues, especialmente cuando se copia una gran cantidad de código de uno a otro. Y, en general, la edición de este tipo de archivos conlleva un trabajo a cámara lenta, lo que resulta agotador.

Creo que todos los editores de texto se comportan así

de todos modos hay que dividir un código fuente tan grande, o reescribir parte de él en una biblioteca

 

Por favor, ayúdame con una pequeña tarea. Necesito un script que llame a LABEL, que parpadee en un determinado intervalo, y ya está. La frecuencia del parpadeo y la especificación de las coordenadas la haré yo mismo, lo principal para mí es la función en sí.

Encontré un ejemplo, lo reescribí para mis necesidades, pero no funciona. Parpadea a su antojo, cada segundo, y luego desaparece durante unos segundos. Y me gustaría que el script se ejecutara hasta que lo detengas, no un número determinado de veces.

for(int i=0; i<50; i++)
   {
      if(!ObjectCreate(0,"Blink",OBJ_LABEL,0,0,0))
   {
      Print("Not Create! Error - ",GetLastError());
   }
   ObjectSetInteger(0,"Blink",OBJPROP_XDISTANCE,50);
   ObjectSetInteger(0,"Blink",OBJPROP_YDISTANCE,50);
   ObjectSetInteger(0,"Blink",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetString(0,"Blink",OBJPROP_TEXT,"Test");
   ObjectSetString(0,"Blink",OBJPROP_FONT,"Arial");
   ObjectSetInteger(0,"Blink",OBJPROP_FONTSIZE,18);
   ObjectSetDouble(0,"Blink",OBJPROP_ANGLE,0);
   ObjectSetInteger(0,"Blink",OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
   ObjectSetInteger(0,"Blink",OBJPROP_COLOR,Red);
   ObjectSetInteger(0,"Blink",OBJPROP_BACK,false);
   ObjectSetInteger(0,"Blink",OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,"Blink",OBJPROP_SELECTED,false);
   ObjectSetInteger(0,"Blink",OBJPROP_HIDDEN,true);
   ObjectSetInteger(0,"Blink",OBJPROP_ZORDER,0);
   
   Sleep(200);
   
   ObjectDelete(0,"Blink");
   
   Sleep(200);
   }
 

Es poco probable que se corrija, pero es un error en general:

#define  A world
#define  MAKESTR(L) #L

void OnStart() {
   Alert( MAKESTR(A) );
}

Alerta: mundo

esperado: Alerta: A

 
Igor Makanu:

Creo que todos los editores de texto se comportan así

De todos modos, hay que intentar dividir un código fuente tan grande en partes, o reescribir parte del código en la biblioteca

EditPad Lite funciona muy bien con archivos de gigabyte, copiando y editando - realmente me gustó la utilidad. Lo que significa que es realista. Entiendo la carga inicial al abrir, o si no trabajas con una pestaña durante mucho tiempo, pero ahora hasta editar un archivo es muy difícil.