Fehler, Irrtümer, Fragen - Seite 2529

 
A100:

Frage nach zulässigen Zeichen in Bezeichnern. Beispiel

Das Ergebnis:

Empfing einen Variablenbezeichner mit einem Leerzeichen.

Wenn wir das Beispiel wie folgt umschreiben:

dann können wir einen Widerspruch formulieren: Was ist der Unterschied zwischen (1) und (2)?

Nun, aus C/C++-Sicht gibt es einen Fehler in µl. Eine beliebige Anzahl von Leerzeichen/Kommentaren kann vor/nach dem Operator ## eingefügt werden, die Token werden zuerst gesplittet und dann beginnt der Präprozessor, d.h. er sieht diese Leerzeichen nicht einmal, der Standard hash_hash hat ein Beispiel:

#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

Es können nur Token verwendet werden, die zusammen ein gültiges Token bilden.

ZS: einige Leute sagen, dass c/s++ keine Autorität für sie ist, warum erwähnen sie sie immer wieder, und außerdem ist es mcl, nicht ..., vielleicht haben sie eine richtige Erklärung?

 
Vict:

vielleicht haben sie die richtige Erklärung?

Normalerweise gibt es dafür nur eine Erklärung: Es wurde von klugen Entwicklern entworfen.)
 
Bei der Arbeit mit großen Quelldateien ist ME sehr träge - zwei 30-Megabyte-Dateien, sogar das Wechseln von einer zur anderen verursacht Trägheit, besonders wenn man eine große Menge an Code von einer zur anderen kopiert. Im Allgemeinen führt die Bearbeitung solcher Dateien dazu, dass man in Zeitlupe arbeitet - das ist lästig.
 
Aleksey Vyazmikin:
Bei der Arbeit mit großen Quelldateien wird ME sehr träge - zwei 30-MB-Dateien, sogar das Wechseln von einer zur anderen verursacht Trägheit, besonders wenn eine große Menge Code von einer zur anderen kopiert wird. Und im Allgemeinen führt die Bearbeitung solcher Dateien dazu, dass man in Zeitlupe arbeitet - das ist ermüdend.

30 MB Text sind für diese Aufgabe eindeutig nicht erforderlich. Strengen Sie sich einmal an, dann geben Sie diese Daten in ein Incluid ein.

 
Andrey Khatimlianskii:

30 MB Text sind für diese Aufgabe eindeutig nicht erforderlich. Torture it once, then put the data into a inlude.

Die Daten sind einmalig und unterliegen einer ständigen Bearbeitung; sie bilden die Grundlage für die Änderung der EA.

 
Kommentare, die für dieses Thema nicht relevant sind, wurden nach"OOP, Vorlagen und Makros in mql5, Tipps und Tricks" verschoben.
 
Aleksey Vyazmikin:
Bei der Arbeit mit großen Quelldateien hängt sich ME oft auf - zwei Dateien von 30 MB, sogar das Wechseln von einer zur anderen führt zu Hängern, besonders wenn eine große Menge Code von einer zur anderen kopiert wird. Und im Allgemeinen führt die Bearbeitung solcher Dateien dazu, dass man in Zeitlupe arbeitet - das ist ermüdend.

Ich denke, dass sich alle Texteditoren so verhalten werden

Sie müssen einen so umfangreichen Quellcode ohnehin aufteilen oder einen Teil davon in einer Bibliothek neu schreiben.

 

Bitte helfen Sie bei einer kleinen Aufgabe. Ich brauche ein Skript, das LABEL aufruft, das in einem bestimmten Intervall blinkt, und das war's. Die Häufigkeit des Blinkens und die Angabe der Koordinaten werde ich selbst vornehmen, die Hauptsache ist für mich die Funktion selbst.

Ich habe ein Beispiel gefunden und es für meine Bedürfnisse umgeschrieben, aber es funktioniert einfach nicht. Es blinkt nach Belieben, dann im Sekundentakt, dann verschwindet es für ein paar Sekunden. Und ich möchte, dass das Skript so lange ausgeführt wird, bis Sie es stoppen, nicht eine bestimmte Anzahl von Malen.

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 ist unwahrscheinlich, dass dies korrigiert wird, aber es ist ein Fehler im Allgemeinen:

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

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

Alert: Welt

erwartet: Alert: A

 
Igor Makanu:

Ich denke, dass sich alle Texteditoren so verhalten werden

Trotzdem muss man versuchen, einen so großen Quellcode in Teile zu zerlegen oder einen Teil des Codes in der Bibliothek neu zu schreiben

EditPad Lite eignet sich hervorragend für Gigabyte-Dateien, zum Kopieren und Bearbeiten - ich fand das Programm wirklich gut. Das heißt, es ist realistisch. Ich verstehe die anfängliche Belastung beim Öffnen oder wenn man lange Zeit nicht mit einer Registerkarte arbeitet, aber jetzt ist sogar das Bearbeiten einer Datei sehr schwierig.