エラー、バグ、質問 - ページ 2529

 
A100:

識別子の許容文字数についての質問です。例

その結果

スペース付きの変数識別子を 受信した。

例をこのように書き直すと。

とすると、(1)と(2)の違いは何か、という矛盾を定式化できる。

C/C++の観点から見ると、µlにエラーがありますね。演算子##の前後には、任意の数の空白やコメントを挿入できます。トークンはまず分解され、それからプリプロセッサが開始されるので、これらの空白は見えません。

#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

は、一緒になって有効なトークンを形成するトークンのみを使用することができます。

ZS: C/S++は権威ではないと言っている人がいますが、なぜ彼らは彼らに言及し続けるのか、とにかくそれはmclであって...ではない、もしかしたら彼らは適切な説明をしているのでしょうか。

 
Vict:

もしかしたら、正しい説明をしているのかも?

通常は、「賢い開発者によって設計された」という説明がなされます。)
 
大きなソースファイルを扱う場合、MEは非常に動作が重くなります。30メガバイトのファイルが2つあり、一方から他方へ大量のコードをコピーする場合は特に、切り替えるだけでも動作が重くなるのです。一般に、このようなファイルを編集すると、作業がスローモーションになり、疲れる。
 
Aleksey Vyazmikin:
大きなソースファイルを扱う場合、MEは非常に動作が重くなります。30MBのファイルが2つあり、1つのファイルから別のファイルに切り替えるだけでも、特に大量のコードを1つから別のファイルにコピーする場合は、動作が重くなるのです。また、一般的にこのようなファイルの編集は、スローモーションでの作業につながり、疲れる。

30MBのテキストは、明らかに仕事には必要ない。一度自分を悩ませてから、このデータをインクルードに入れてください。

 
Andrey Khatimlianskii:

30MBのテキストは、明らかに仕事に必要ないものです。一度拷問して、そのデータをinludeに入れる。

データは一種類で、常に編集されるため、EA改造の基礎となるものです。

 
このトピックに関係のないコメントは、「mql5でのOOP、テンプレート、マクロ、ヒントと コツ」に移動しました。
 
Aleksey Vyazmikin:
大きなソースファイルを扱うと、MEはよくハングします。30MBのファイルが2つあり、特に大量のコードを1つから別のものにコピーすると、1つから別のものに切り替えることさえハングします。また、一般的にこのようなファイルの編集は、スローモーションでの作業につながり、疲れる。

すべてのテキストエディタがこのような動作をすると思います。

このような巨大なソースコードは、とにかく分割するか、一部をライブラリに書き換える必要があります。

 

小さなことですが、ご協力お願いします。LABELを呼び出して、一定の間隔で点滅させる、そんなスクリプトが必要です。点滅の頻度や座標の指定は自分でやりますが、私にとってのメインは機能そのものです。

サンプルを見つけて、私のニーズに合わせて書き直したのですが、どうしてもうまくいきません。好きなように点滅し、1秒ごとに点滅し、数秒後に消える。また、スクリプトは一定回数ではなく、停止するまで実行されるようにしてほしい。

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);
   }
 

修正される可能性は低いが、一般的には間違い。

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

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

アラート: ワールド

期待値:警戒値:A

 
Igor Makanu:

すべてのテキストエディタがこのような動作をすると思います。

同じように、このような巨大なソースコードを部分的に分割してみたり、ライブラリのコードの一部を書き換えてみたりすることが必要です

EditPad Liteはギガバイトのファイル、コピー、編集で大活躍 - 私はこのユーティリティをとても気に入りました。つまり、現実的だということです。開くときの初期ロードや、長時間タブで作業しない場合はわかるのですが、今はファイルの編集すら非常にやりにくいです。