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

 
fxsaber:
これはダムコンパイラでないとできないことです。自分でもわかっているはずです。
C++コンパイラは、あなたのためにそれを考えてはくれません。
#include <iostream>
using namespace std;
struct S
{
    S operator +(const S&) {cout << "operator +\n"; return S{};}
};
S operator ""_s(const char*, size_t) {cout << "literal operator\n"; return S{};}
int main()
{
    cout << "___literal concatenation example___\n";
    S s = "sd"_s "sf"_s;
    cout << "___operator+ example___\n";
    S s2 = "sd"_s + "sf"_s;
}
出力されます。
リテラル連結の例
直交演算子
オペレーター+α
直交演算子
直交演算子

演算子+α

ご覧のように、2番目のケースではoperator+がconcatenationに置き換わっていません(リテラル用に作成され、その後の実行時に追加されます)。プログラマが可能性を持ちすぎているため、コンパイラが単純にカットすることができず、最適化の幅が大きく狭まってしまうのです。もちろんこれはMKLではないので、違うかもしれませんが、「普通のコンパイラが全部やってくれる」という発言そのものが間違いです。
 
pavlick_:
もちろんこれはMQLではないので、違うかもしれませんが、「普通のコンパイラが全部やってくれる」というのは誤りです。
まあ、MQLにはそのような演算子はないので、それに関連する機能はないのが道理です。私は全くプログラマーではないので、コンパイラについて議論するつもりはない。MQLは少ししか知らない。
 

時間とお金の浪費にうんざり:オプティマイザーは最後のパスでハングアップします。エージェントは何もしない、全てはオーソライズドステージにある。ログには沈黙がある。エージェントの有効化/無効化は意味がなく、最適化が再開さ れるとすべてがゼロから始まります。

この問題に直面したことがある人はいますか?どう戦うか?

ファイル:
opt1.png  44 kb
opt2.png  96 kb
opt3.png  88 kb
 

マジックライン

画面解像度1024x768でのMetaEditorの操作シーケンス。

  • 添付ファイルを開く
  • 水平スクロールスライダーを右いっぱいに移動する(写真のように)
  • 3行目で /*12345*/ をクリックします。
その他の設定:サービス/設定/一般/集計 4文字
ファイル:
Test.mq5  2 kb
削除済み  

StringToInteger()で文字列を 数値に変換しようとしたとき、文字列に数値が含まれていない場合は、エラーにならずに0を返します(GetLastError() = 0)。入力パラメータに文字列が含まれていて、ユーザーがその値を間違って指定した場合、この関数は不正確な値を返しますが、エラーは表示されません。これはヤバい。

さらに,文字列の中に(50ではなく)5oのような不正確な数値表現があった場合,この関数はエラーを発生させることなく値5を返します.0でないだけでなく、この関数は文字列を5と分解してしまうので、これも不正確です。

開発者の皆さん、エラーコードを追加するか、文字列を解析できない場合はLONG_MAX値+エラーを返すなどして、何が問題なのかを判断できるような関数に改善してください。今は無理です。

スクリプトのコードを確認する。

#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
input string value="05";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   const long iValue=StringToInteger(value);
   Print("iValue = ",iValue,", lastError = ",GetLastError());
  }
//+------------------------------------------------------------------+
 

10分もかからずに、この機能を実装してください。

システム機能の挙動を変えることはありません。

削除済み  
Renat Fatkhullin:

10分もかからずに、この機能を実装してください。

システム機能の挙動を変えることはありません。

では、機能、特に明らかに嘘をつくことができる機能を洗練させる必要はないとお考えですか?

エラーコードを 追加するだけでもOkなのに、車輪の再発明をしろというのか。もちろん複雑なものでなく、自転車です。

 
Alexey Kozitsyn:

では、機能、特に明らかに嘘をつくことができる機能の洗練は必要ないとお考えですか?

エラーコードを 追加するだけでもいいのですが、今度は車輪の再発明を提案しているのですね。もちろん複雑なものでなく、自転車です。

精製する必要はなく、wtoi/atoiの完全なアナログである。質問は終了しました。
 

コンパイルエラー

#include <Math\Stat\Math.mqh>
struct S {};
 
こんにちは、メタトレーダーで「期間セパレーター」を設定することが可能かどうか教えてください。 m5で15、30、1時間のローソク足がどこで終わるかを確認できるようにしたいのですが、常に時間を見る必要がないようにするには、どうすればいいでしょうか?