配列の参照 - ページ 3 1234567 新しいコメント TheXpert 2012.11.21 17:06 #21 なんということでしょう、この構造物の大きさは......。struct ArrayStore { long reserved; double x[]; };60バイト ) でも、それはおかしいよ。52バイトのスクランブルを解除することになる。もし興味があれば、以下は掘るための初期コードです。#import "msvcrt.dll" long memcpy(long &dst, long &src, int cnt); long memcpy(uchar &dst[], long &src, int cnt); #import struct ArrayStore { long reserved; double x[]; }; #define N 60 // sizeof(ArrayStore) == 60 void OnStart() { ArrayStore store; ArrayResize(store.x, 0x11, 0x22); store.reserved = 0xFF; uchar array[N]; ArrayInitialize(array, 0); memcpy(array, store.reserved, N); string s; for (int i = 0; i < N; i++) { s = s + " " + StringFormat("%.2X", array[i]); } Print(s); } --- 2012.11.21 17:39 #22 ArrayStore::double x[]; このパラメーターの意味がわからない...。 Vladimir Gomonov 2012.11.21 18:47 #23 sergeev: このパラメーターの意味がよくわからないのですが...。配列の 最初の要素のアドレスを取得するのはどうでしょう。 long ArrPtr = memcpy(Arr[0], Arr[0], 1);が効かない? --- 2012.11.21 18:50 #24 MetaDriver:配列の 最初の要素のアドレスを取得するのはどうでしょう。 long ArrPtr = memcpy(Arr[0], Arr[0], 1);が効かない?はもちろんのことしかし、なぜなのかがわからない ArrayStore::double x[]; Vladimir Gomonov 2012.11.21 18:57 #25 sergeev:もちろん、効果はあります。でも、なぜなのか、まだわからない それもわからない。:) TheXpert 2012.11.21 20:43 #26 MetaDriver: 私もよくわかりません。:)さあもう一度、課題を繰り返してみます。時系列の大きさに対して時間O(1)で、それを参照する。つまり、配列のコピーはアプリオリに禁止されているのです。唯一の方法は、配列構造をフェッチすることです。そこで、配列ポインタの代わりに時系列ポインタを強制的に指定し、いくつかのパラメータを付けて、構造体に大丈夫と思わせる。配列構造のサイズは 52バイトで、そのうち8バイトは(おそらく)実際にポインタであり、残りはサイズ、リザーブ、AsSeriesプロパティなどの設定である。(Win7x64)あとは、その構造を解きほぐし、適切なデータを滑らせる方法を身につけることです。 Документация по MQL5: Основы языка / Операции и выражения / Другие операции www.mql5.com Основы языка / Операции и выражения / Другие операции - Документация по MQL5 TheXpert 2012.11.21 20:46 #27 sergeev:はもちろん、作品です。 もちろん動作しますが、この方法ではデータへのポインタを 取得するため、ポインタを置き換えることはできず、データのみを置き換えることになります、したがって.もっと踏み込まないと --- 2012.11.21 21:07 #28 それとも、何が必要なのか理解できていないのか。最初の投稿で、問題を設定しましたね。このような、ある種の配列の参照。memcpyが正常に配列へのポインタを 取得することを示しました。その後、同じようにmemcpyを使って、データを取得します。では、本当に必要なものは何でしょうか? なぜここで何らかの構造体を作るのでしょうか? 配列へのポインタとどんな関係があるのでしょうか? TheXpert 2012.11.21 21:32 #29 sergeev:そしてmemcpyを使ってデータを取り出します。ゆっくりとすべてのDLL関数は、ラッパーを介して呼び出されます。 コピーしない通常の配列が必要です。最初の投稿をご覧ください。私が欲しいものを的確に言い当てた、非常に正確なコードを持っているのです。 Алексей Тарабанов 2012.11.21 22:02 #30 TheXpert:ゆっくりとすべてのDLL関数は、ラッパーを介して呼び出されます。 コピーしない通常の配列が必要です。最初の投稿をご覧ください。私が欲しいものを正確に伝える、非常に正確なコードがあるのです。単純なことです:)カルテットで本格的な時系列配列を作れば(あなたのは9番目です)、黄金の鍵はあなたのポケットの中です:)平手打ちされるよ、イミフ。聖なる牛をハックすることはできない。 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
なんということでしょう、この構造物の大きさは......。
60バイト ) でも、それはおかしいよ。52バイトのスクランブルを解除することになる。
もし興味があれば、以下は掘るための初期コードです。
ArrayStore::double x[];
このパラメーターの意味がわからない...。このパラメーターの意味がよくわからないのですが...。
配列の 最初の要素のアドレスを取得するのはどうでしょう。
long ArrPtr = memcpy(Arr[0], Arr[0], 1);
が効かない?
配列の 最初の要素のアドレスを取得するのはどうでしょう。
long ArrPtr = memcpy(Arr[0], Arr[0], 1);
が効かない?
はもちろんのこと
しかし、なぜなのかがわからない
ArrayStore::double x[];
もちろん、効果はあります。
でも、なぜなのか、まだわからない
私もよくわかりません。:)
さあ
もう一度、課題を繰り返してみます。時系列の大きさに対して時間O(1)で、それを参照する。つまり、配列のコピーはアプリオリに禁止されているのです。
唯一の方法は、配列構造をフェッチすることです。そこで、配列ポインタの代わりに時系列ポインタを強制的に指定し、いくつかのパラメータを付けて、構造体に大丈夫と思わせる。
配列構造のサイズは 52バイトで、そのうち8バイトは(おそらく)実際にポインタであり、残りはサイズ、リザーブ、AsSeriesプロパティなどの設定である。(Win7x64)
あとは、その構造を解きほぐし、適切なデータを滑らせる方法を身につけることです。
はもちろん、作品です。
それとも、何が必要なのか理解できていないのか。
最初の投稿で、問題を設定しましたね。
memcpyが正常に配列へのポインタを 取得することを示しました。
その後、同じようにmemcpyを使って、データを取得します。
では、本当に必要なものは何でしょうか? なぜここで何らかの構造体を作るのでしょうか? 配列へのポインタとどんな関係があるのでしょうか?
そしてmemcpyを使ってデータを取り出します。
ゆっくりとすべてのDLL関数は、ラッパーを介して呼び出されます。
コピーしない通常の配列が必要です。
最初の投稿をご覧ください。私が欲しいものを的確に言い当てた、非常に正確なコードを持っているのです。
ゆっくりとすべてのDLL関数は、ラッパーを介して呼び出されます。
コピーしない通常の配列が必要です。
最初の投稿をご覧ください。私が欲しいものを正確に伝える、非常に正確なコードがあるのです。
単純なことです:)カルテットで本格的な時系列配列を作れば(あなたのは9番目です)、黄金の鍵はあなたのポケットの中です:)
平手打ちされるよ、イミフ。聖なる牛をハックすることはできない。