// Пример хранения/обмена данными через Ресурсы внутри Терминала#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166voidOnStart()
{
const RESOURCEDATA<int> ResourceINT("::int"); // Ресурс для обмена int-ами. const - как доказательство, что ничего не пишется в объект классаint ArrayINT[] = {1, 2, 3};
int Num = 5;
ResourceINT = ArrayINT; // Ресурс хранит массив.
ResourceINT += Num; // Добавили в ресурс еще значение.
ResourceINT += ArrayINT; // Добавили массив.int ArrayINT2[];
ResourceINT.Get(ArrayINT2); // Считали данные из ресурса.ArrayPrint(ArrayINT2); // Вывели: 1 2 3 5 1 2 3
ResourceINT.Free(); // Удалили данные из ресурсаPrint(ResourceINT.Get(ArrayINT2)); // Убедились, что данных нет: 0const RESOURCEDATA<MqlTick> ResourceTicks("::Ticks"); // Ресурс для обмена тиками. const - как доказательство, что ничего не пишется в объект классаMqlTick Tick;
if (SymbolInfoTick(_Symbol, Tick))
for (int i = 0; i < 3; i++)
ResourceTicks += Tick; // Добавили в ресурс тикиMqlTick Ticks[];
ResourceTicks.Get(Ticks); // Считали данные из ресурса.ArrayPrint(Ticks); // Вывели.// Это полное имя ресурса для обращения из другой программыconststring NameOut = StringSubstr(MQLInfoString(MQL_PROGRAM_PATH), StringLen(TerminalInfoString(TERMINAL_PATH)) + 5) + "::Ticks";
Print(NameOut); // Вывели полное имя ресурса.const RESOURCEDATA<MqlTick> Resource(NameOut); // Ресурс для доступа к данным (read-only) из другой программыMqlTick TicksOut[];
Resource.Get(TicksOut); // Считали данные из ресурса.ArrayPrint(TicksOut); // Вывели.
Resource.Free(); // Не получится повлиять на данные read-only-ресурса.Print(_LastError); // ERR_INVALID_PARAMETER - Ошибочный параметр при вызове системной функции.
}
もちろんです。
また、私が戸惑ったことであなたを戸惑わせたい)))1つのリソースに複数の行を個別に渡して、リソースを読みながらそこから選択した行だけを読み出すことは可能でしょうか?
画像の場合はTextOut()で数行作成できますが、このようなリソースを読み込もうとするとうまくいきません。1行目のみ読むことができます。
また、私が戸惑ったことであなたを戸惑わせたい)))1つのリソースにいくつかの別々の行を渡して、そこから選択した行だけを読み取ることは可能でしょうか?
画像の場合、TextOut()で数行作成できますが、このリソースを読み込もうとすると失敗します。1行目のみ読むことができます。
写真からテキストを保存したり、読んだりしようとしても意味がありません。リソースを使って、上で説明したように文字列を書き、CharArrayToStringで取り出して戻します。次に、文字列をデリミターで分割し、その中から正しいものを探す。(したがって、保存する前に、何らかの記号で文字列を部分文字列に分割してください)。
絵から読み取ろうという気にはなりませんでした。写真は数行の例として挙げただけです。
部分文字列を抜き出すのは簡単すぎる。私たちは安易な方法を求めてはいません :)))ありがとうございました。
絵から読み取ろうという気にはなりませんでした。写真は数行の例として挙げただけです。
部分文字列を取り出すには、あまりにも簡単です。安易な方法を求めているわけではないのです)ありがとうございました。
データをリソースに保存して取り出す方法を既に知っていれば、部分文字列を取り出すのはそれほど難しいことではありません。それ自体は簡単な作業です。まず文字列をリソースに保存し、そこから取り出してみてください。次に、文字列を部分文字列に分割して、正しいものを検索する関数を追加します。
Peter ありがとうございます。私は数年前に弦楽器の扱い方を学びました。そして、リソースを保存して読む方法ですが、皆さんの協力で、昨日わかりました。ただ、頭の中で、やってみようかな...みたいな必死のメールが来て、どうしよう...メールが途中で迷子になり、思考停止してしまいました。
リソースを作成 する際の2次元配列と1次元配列の違いについて考えています。この件に関して、何か進展や考えはありますか?
Peter ありがとうございます。私は数年前に弦楽器の扱い方を学びました。そして、リソースを保存して読む方法ですが、皆さんの協力で、昨日わかりました。ただ、頭の中で、やってみようかな...みたいな必死なメールが来て、でもどうしよう......メールが邪魔して、思考が迷子になってしまった。
そこで今、リソースを作成 するための2次元配列と1次元配列の違いについて考えているところです。この件に関して、何かご意見、ご感想はありますか?
以前のページを読んで、リソースから小さな文字列を1つだけ読み取るというタスクであることに気づきました。この文字列が64文字以下なら、ユニオンでごちゃごちゃやって、リソースにデータを保存する意味がないんです。 OBJPROP_TEXTの descriptionプロパティに必要な文字列を書き込むだけです。
ObjectSetString(chartID,label_name,OBJPROP_TEXT, "あなたの文字列");
そして、このように取り戻してください。
文字列 Str =ObjectGetString(chartID,label_name,OBJPROP_TEXT);
で、おしまいです))
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
ライブラリ:TradeTransactions
fxsaber さん 2018.09.20 16:23
以前のページを読んで、リソースから小さな文字列を1つだけ読み取るというタスクであることに気づきました。この文字列が64文字以下なら、ユニオンでごちゃごちゃやって、リソースにデータを保存する意味がないんです。 OBJPROP_TEXTの descriptionプロパティに必要な文字列を書き込むだけです。
ObjectSetString(chartID,label_name,OBJPROP_TEXT, "あなたの文字列");
そして、このように取り戻してください。
文字列 Str = ObjectGetString(chartID,label_name,OBJPROP_TEXT);
で、おしまいです))
そうではありません。課題は、数行の情報を出力することでした。私見ですが...を表示させたかっただけなんです。その中の一行には日付が入っている。この日付はわかりやすくするためだけでなく、再稼働後もプログラムで使用する必要があります。どうにかして保存しなければならないことが判明したのです。ここからが本番、安易に手を出すのはやめよう。日付を保存する方法の1つはグラフィカルなオブジェクトを使うことなので、同じリソースを使うのはいかがでしょう。MTリソースは再起動すると読めるようになりますが、コンピュータの再起動後は未確認です。リソースとユニットを把握したことが大きいですね。気がつくと、頭の中に必死のメールが届いていた。すべて削除したら、有益な仕事を続けるよ。
そうでもないんです。課題は、数行の情報を出力することでした。私見ですが.というのは、キャンバスと一緒に展示することを想定してのことです。その中の一行には日付が入っている。この日付はわかりやすくするためだけでなく、再稼働後もプログラムで使用する必要があります。どうにかして保存しなければならないことが判明したのです。ここからが本番、安易に手を出すのはやめよう。日付を保存する方法の1つはグラフィカルなオブジェクトを使うことなので、同じリソースを使うのはいかがでしょう。MTリソースは再起動すると読めるようになりますが、コンピュータの再起動後は未確認です。リソースとユニットを把握したことが大きいですね。気がつくと、頭の中に必死のメールが届いていた。すべて削除したら、有益な仕事を続けるよ。
よかったです。そして、資源や組合を使いこなし続ける。あらゆるデータを高速に書き込んで保存するだけでなく、異なるプログラム間でデータをリアルタイムに共有し、ディスクに負荷をかけない汎用的な方法を提供します。