"ダミー "からの質問 - ページ 263

 
Contender:

StringConcatenate() を使って、文字列を「糊付け」してみましょう。

に置き換えた。

StringConcatenate(nTL,"nTL_",IntegerToString(MathRand()));
は役に立たなかった。
 
Silent:
あと1週間は頭を悩ませることになりそうです。もう少し詳しく教えてください。(荒れることもある :)

ユニークな名前を持つ数百のオブジェクトのための他のオプションはありますか?

(オブジェクトのグループは、名前に同じ部分の文字列が含まれていないと、グループを削除できません)。

カウンター
 
TheXpert:

さて、論理的には、もし関数が最後のエラーを設定するならば、関数が正常に終了すると、エラー値がゼロになるか、ドキュメントに記述されている値に なるはずです。それ以外の方法はない。

つまり、呼び出しが成功し、エラーがゼロでない場合、このケースはドキュメントに記述されるべきです。

私もそう思っていたのですが、確信に変わりました。SDにリクエストを書いたら、上のような回答が返ってきました :)
 
220Volt:

Get Last Errorsが0以外を表示するので心配ですか?もしそうなら、関数が失敗を報告した場合のみ、エラーを求めるようにします。また、プロットの最後にエラーを求めるべきではない、ゴミのような値が出るかもしれない。MT4ではこうなのですが、もしかしたらこちらでは違うかもしれません。

疑似コードです。

エラーはResetLastError() でクリアされるはずですが、代入が行われている場合は等価です。
 
Silent:

私のお勧めは、上で説明した原則に従って、Get LastErrorをやり直すことです。その時だけ、発生するエラー、もしかしたら他のものが出てくるかもしれません。

 
220Volt:
私もそう思っていたのですが、確信に変わりました。SDにリクエストを書いたら、上記と同じ答えが返ってきました :)
ブレイデッド
 

リセットは発呼前にリセットされます。

エラーの原因は、以下のエントリです。

void  CreateTL(string name,datetime time1,double price1,datetime time2,double price2,bool ray_left,bool ray_right,color color_TL)
  {
//------------ nTL,nTLh,nTLl,nTLe
   nTL="nTL_"+IntegerToString(MathRand());
   nTLh="nTLh_"+IntegerToString(MathRand());
   nTLl="nTLl_"+IntegerToString(MathRand());
   nTLe="nTLe_"+IntegerToString(MathRand());
//------------
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
  };

このバリアントにはエラーがありません

void  CreateTL(string name,datetime time1,double price1,datetime time2,double price2,bool ray_left,bool ray_right,color color_TL)
  {
//------------ nTL,nTLh,nTLl,nTLe
   //nTL="nTL_"+IntegerToString(MathRand());
   //nTLh="nTLh_"+IntegerToString(MathRand());
   //nTLl="nTLl_"+IntegerToString(MathRand());
   //nTLe="nTLe_"+IntegerToString(MathRand());
//------------
   ObjectCreate(0,nTL="nTL_"+IntegerToString(MathRand());,OBJ_TREND,0,time1,price1,time2,price2);
  };
 
zfs:
カウンター
同じ数字を文字列で表すと、どんな違いがあるのでしょう?
 
Silent:
同じ数字が並んでいるのだから、何が違うというのだ。
数字が一致しない保証はありません。エラーの可能性
 
zfs:
数字が一致しない保証はありません。エラーの可能性があります。

まず、可能性がない(Urainのコードは一度も失敗したことがない)。

x=0;  MathSrand(x);
   for(i=0;i<MathRand();i++)MathRand();
   MathSrand((int)TimeLocal()*MathRand());

次に、最初の呼び出しでまさにエラー(オブジェクトが作成さ れない)が発生しています。

Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5