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

 

このように、本当に曖昧になってしまうのです。

void f( uint )  { Print( __FUNCSIG__ ); }
void f( int  )  { Print( __FUNCSIG__ ); }
void OnStart()
{
        char ch = 0;
        f( ch ); // неопределенность 
}

を書き換えると、不思議なことにコンパイラによって克服されます。

#import "Test.ex5"
        void f( uint );
#import
        void f( int  )  { Print( __FUNCSIG__ ); }
void OnStart()
{
        char ch = 0;
        f( ch ); // вызывается f(int), а должна генерироваться неопределенность
}
 
あなたの真実
 
以前から言われていたことかも知れませんが。MetaEditorでは、入力変数名とローカル変数 名(またはクラスフィールド名)が一致すると、入力変数と同様に後者がいたるところで赤くハイライトされます。 このため、コードを読むときに混乱します。 これを修正する必要があります。
 
Alexey Navoykov:
以前から言われていたことなのか、そうでないのか分かりませんが。MetaEditorでは、入力変数名とローカル変数 名(またはクラスフィールド名)が一致する場合、入力変数と同様に後者がいたるところで赤でマークされます。 これはコードを読むときに混乱を引き起こします。 これを修正する必要があります。

コード・エンティティに同じ名前をつけるのは、自分の足を引っ張ることになります。)

入力変数の名前を変更する方が簡単だし、問題や混乱も起きないだろうし......。

 

MT4/845、Windows7/64bit。テキストを改行 する際の質問です。スクリプトを作りました。

#property strict

string t1="Text_1";
string t2="Text_2";

void OnStart()
  {
   Print(t1+"\n "+t2);
   Print("Text_3"+"\n Text_4");
  }

結果


Text_2 と Text_4 の値が他の行にあることを期待していました。何が問題なのか、アドバイスをお願いします。

 
Konstantin Karpov:

コード・エンティティに同じ名前をつけるのは、自分の足を引っ張ることになります。)

入力変数の名前を変更する方が簡単だし、問題や混乱もないだろう...。

同じ名前をわざと つけることはありません。 ローカル関数のコードも、外部プログラムのコードも、それぞれ別の人生を歩んでいます。 また、外部変数の名前は時間の経過とともに変化し、新しい外部変数が追加されることもありえます。その後、突然、何百もの関数のうちの1つが同じ名前のローカル変数 を持っていたら、グローバル変数の 名前をどう変えるべきだと思いますか? 開発者のバグに言い訳を探すべきではありません。
 

MT4/845、Windows7/64bit。スクリプトです。

#property strict

double d1 = 2.009745110811111111111111111;
double d2 = 3.654;
double d3;
//---
void OnStart()
  {
   d3=d1/d2;
   Print("A: d3 = ",DoubleToString(d3));
   Print("B: d3 = ",DoubleToStr(d3));
   Print("C: d3 = ",DoubleToString(d3,16));
   Print("D: d3 = ",DoubleToString(d3,8));
   Print("E: d3 = ",DoubleToString(NormalizeDouble(d3,8)));
   Print("F: d3 = ",DoubleToString(NormalizeDouble(d3,7)));
   Print("G: d3 = ",DoubleToString(NormalizeDouble(d3,8),7));
   Print("H: d3 = ",DoubleToString(NormalizeDouble(d3,8),8));
  }
//+------------------------------------------------------------------+

結果


0.55001234という数字を印刷する方法をご存知の方はいらっしゃいますか?

 
Maxim Khrolenko:

MT4/845、Windows7/64bit。スクリプトです。

結果


0.55001234という数字を印刷する方法をご存知の方はいらっしゃいますか?

 Print("C: d3 = ",DoubleToString(d3,8));

 
Maxim Khrolenko:

MT4/845、Windows7/64bit。テキストを改行 する際の質問です。スクリプトを作った。

MT4でエラーが発生するらしい(MT5では問題なし)
 
A100:
どうやらMT4のバグらしい(MT5は問題なし)
なるほど、開発者がこの点に注目してくれることを期待します。