int j[1];
Alert("Размер массива из одного элемента без списка инициализации = ", sizeof(j), " Массив динамический? ", ArrayIsDynamic(j));
int k[];
Alert("Размер структуры для динамического массива = ", sizeof(k), " Массив динамический? ",ArrayIsDynamic(k));
int g[] = {0};
Alert("Размер массива из одного элемента со списком инициализации = ", sizeof(g), " Массив динамический? ",ArrayIsDynamic(g));
OK、行ってきます。:) 私も端末の外にいます。
初歩的なことを確認 -ArrayResize(...)を使おうとしています。
ArrayResize(...)を使おうとするのは初歩的なことです。
さて、ここで間違いがあります。Metaquotesの市民の皆さん、ご注目ください。
エラーの本質: 初期化リスト (int g[] = {0}; ) を配列に使用すると、sizeof(g) 関数は struct MqlArrayObject (動的配列用に作成) のサイズを 提供します。エラーの本質: 初期化リスト (int g[] = {0}; ) を配列に使用した場合、sizeof(g) 関数は (動的配列用に作成された) struct MqlArrayObject のサイズを 表示します。
そして、ArrayIsDinamic()は、配列が静的であると言っているのですね。
j - 静的
k - ダイナミック
g - 静的
....
g - 静的
さて、ここで間違いがあります。首都圏の皆さん、ご注目ください。
エラーの内容:配列に初期化リスト(int g[] = {0};)を使用すると、関数sizeof(g)が(動的配列用に作成された)MqlArrayObject構造体のサイズを 出力してしまいます。メッセージありがとうございます、エラー修正しました。
イリヤス!!!ちょっと待ったーーーー
具体的にはどのように修正されたのでしょうか?宣言で 解析された配列が ダイナミック(リサイズ可能)になったのでしょうか?
それとも完全に静止画?
それとも完全に静止しているのでしょうか?
もちろん、静的なコードです。
ああ、今わかったよ。
Renat、私は長い間、ちょうどこの問題について提案を持っています。 少なくとも静的なものについては、配列のための名前付き型付けを作ってください(他のすべての型はすでにそれを持っています)。
つまり,例えば,typedef Int8 = int[8]; と宣言することができる.
問題の代償は、より大きなサイズの配列の中の部分配列である1次元(2、3次元)配列を関数に渡すことができることです。
つまり、さらに :Int8 arr[...] と宣言すれば、arr[i] をfunc(Int8 &a) {...} 関数に渡すことができるのです。
現在、私はmql5で多くの余分なアクションを実行する必要があり、関数にサブアレイを渡すことができないため、多くの醜いコードを書かなければなりません。
Servicedeskで書かない のは、私には議論の余地がありそうな話題だからです。