私のアプローチコアはエンジンです。 - ページ 94

 
Vitaly Muzichenko:

美しいモノローグ)

ハムレットが休んでいる)

 
Реter Konow:

それで、どうしたんですか?

エラー

err_resource_not_found

https://www.mql5.com/ru/docs/runtime/resources

ヘルプを読む .

引用元

 Напомним, что для использования ресурса из mql5-программы его необходимо 
указывать в виде: <путь_имя_файла_EX5>::<имя_ресурса>.
 
Nikolai Semko:

https://www.mql5.com/ru/docs/runtime/resources

参考文献を読む.

引用元

ああ、わかったよ差し込み方が間違っていました。

 
Реter Konow:
私が考えていたのは、こんなことです。他のプログラムのリソースを利用する方法があります。解決策はあるのでしょうね。ドキュメントを見ないといけないね。

リソースの接続が正しくありません。

リソースを読み込みたいプログラムのパスを指定する必要があります。

読み込みプログラムのIniteでは、他のプログラムでリソースファイルへの接続を設定する必要があります。

if(!ObjectSetString(0,"Resource",OBJPROP_BMPFILE,"\\Experts\\Tester EA.ex4::Resource"))Print("Resource is not connected!");

また、リソースを読み込む際には、フルパスも指定する。

if(!ResourceReadImage("\\Experts\\Tester EA.ex4::Resource",Data,width,height))Print("Failed to read resource!  ",GetLastError());

//--------------------------------------------

しかし、新たなナンセンスがある。

リソースを読み込むと、線に斑点が表示される。以下はそのコードです。

void OnTimer()
  {
//---
   uchar Arr[];
   uint Data[],width,height;
   //-----------------------------
   if(!ResourceReadImage("\\Experts\\Tester EA.ex4::Resource",Data,width,height))Print("Failed to read resource!  ",GetLastError());
   //-----------------------------
   ArrayCopy(Arr,Data);
   //-----------------------------
   string Message = CharArrayToString(Arr);
   //-----------------------------
   Print(Message);
  }

そして不思議なことに、リソースを持つExpert Advisorをチャートから削除しても、読み込みプログラムはリソースを受け取り続けるのです。このリソースには、同じように赤文字とルビが振られます。ゴミはいつも違う。

そして、どのように対処すべきなのか。

ZS.CharArrayToString() で他のページエンコーディングを指定するようにしてみます。

 

興味深いことに、筆記体の行の大きさは、メッセージの入った配列の大き さと同じである。

しかし、フリンジの流れの中で、時々、ほぼ正確なBid 値が閃き、それが2面目に書き込まれることがある。一度だけ点滅し、その中にも1〜2本のフリンジがあります。でも、読み応えはあります。そしてまた、まだら模様の流れ。

リソースフィルイベントの送信側では、すべてが正しく行われていることが判明しました。そして、読み込み側は、内部が破損し、ポイ捨てされたリソースを受け入れる。読む側がリソース内のメッセージを速く読めば読むほど、メッセージは無傷でいられる。

では、正確な読み書きの同期が必要なのですね。


ZS.親愛なるfxsaberは、ここで何が間違っているのかを明確にすることができますか?

ファイルを添付します。

ファイル:
 
Реter Konow:

ZS.fxsaber様、何が問題なのか説明していただけますか?

ここでは、多くの人があなたの間違いにすぐに気づきますが、危険を伴うので黙っていることを好みます。そして、それらをとてもよく理解しています。事前に言っておくと、その後に答えることはない。自分のミスを探し、他人の態度をきちんと構築することを学ぶ。


コードに

ArrayCopyでuintをucharにコピーすると-エラーになる。

CharArrayToString- これは文字列がANSIである場合に動作します。


バイトによる型表現の特殊性を整理する。

 
fxsaber:

ここでは、多くの人があなたの間違いにすぐに気づきますが、危険が伴うので黙っていることを好みます。そして、それらをとてもよく理解しています。以後、回答しません。自分のミスを探し、他人の態度をきちんと構築することを学ぶ。


コードに

ArrayCopyでuintをucharにコピーすると-エラーになる。

CharArrayToString - これは文字列がANSIである場合に動作します。


バイトによる型表現の特殊性を理解するようにする。

周りの人が私の解決策を尊重すれば、私も相手の解決策を尊重します。まあ、それしかないでしょう。お互いを尊重すること。

コードでありがとうございます。何とかしてみます。

 

くそ、うんざりだ。それを理解するのに半日かかりました。

すでに労働組合を把握。しかし、この解決策は、キューブの中の松葉づえです。そこではまだバイト演算が必要です。しかし、私の仕事には全く関係ありません。

オブジェクトの記述で 作業する方がはるかに簡単です。保証されており、シンプルです。しかし、テスターを通してリソースが動くかどうかはわかりません。面倒くさいから

ここでは、組合を介した解決策を紹介します。

//+------------------------------------------------------------------+
//|                                                    Tester EA.mq4 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
union Char_Uint
  {
   uchar   Char[8];
   uint    Uint[2];  
   double  Double; 
  };
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   //----------------------------------------------
   if(!ObjectCreate(0,"Resource",OBJ_BITMAP_LABEL,0,0,0))Print("Object is not created!  ",GetLastError());
   else Print("Object created!");
   //-------------------------------
   if(!ObjectSetString(0,"Resource",OBJPROP_BMPFILE,"::Resource"))Print("BMPFILE is not created!");
   else Print("BMPFILE created!");
   //----------------------------------------------
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   
      
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   //---------------------------
   Char_Uint u;
   //---------------------------
   u.Double = Bid;
   //---------------------------
   if(!ResourceCreate("::Resource",u.Uint,2,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA))Print("Resource is not created!");
   //---------------------------   
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   
  }
//+------------------------------------------------------------------+

そして、読み取りインジケーター。

//+------------------------------------------------------------------+
//|                                              Resource reader.mq4 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
union Char_Uint
  {
   uchar Char[8]; 
   uint  Uint[2]; 
  };
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   EventSetMillisecondTimer(5250); 
   
   if(!ObjectSetString(0,"Resource",OBJPROP_BMPFILE,"\\Experts\\Tester EA.ex4::Resource"))Print("Resource is not connected!");
   else Print("Resource connected!");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   Char_Uint u;
   uint width,height;
   string Message; 
   //-----------------------------
   if(!ResourceReadImage("\\Experts\\Tester EA.ex4::Resource",u.Uint,width,height))Print("Failed to read resource!  ",GetLastError());
   //-----------------------------
   Message = CharArrayToString(u.Char);
   //-----------------------------
   Print(Message);
   //-----------------------------
  }
//+------------------------------------------------------------------+
 

ワニが出続けている。いつも違うんです。だから、資源にはいろいろなゴミがあるんです。その内容が同じであれば、あまり変わらないのでは?

一般的には、どのような仕組みになっているのか、よくわからないのですが......。

後で解決策が見つかるかも...。

 

組合というのは、確かに面白いものです。しかし、どのような目的で(資源の保全以外で)役に立つのか、私には思いつきません。