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

 

これがその台本です。

オブジェクトを作成した。指定されたテキスト

文字そのものや大きさは認識しています。

文字そのものは認識されるのに、サイズが認識されないのはなぜですか?

ファイル:
prob.mq4  1 kb
 
Vasyl Nosal:

これがその台本です。

オブジェクトを作成した。指定されたテキスト

文字そのものや大きさを認識すること。

文字が認識されるのに、サイズが認識されないのはなぜですか?

今確認しました。

色までちゃんと戻ってくる。

なぜサイズではないのですか?これはある種のタブーなのでしょうか?

ファイル:
prob.mq4  1 kb
 
Vasyl Nosal:

今確認しました。

色まで正しく戻る。

なぜサイズではないのですか?これはある種のタブーなのでしょうか?

テキストラベルがレンダリングされるまで、サイズは不明である。ここではっきりしないのは?
 
Vasyl Nosal:

今確認しました。

色まで正しく戻る。

なぜサイズではないのですか?それはある種のタブーなのでしょうか?

オブジェクトがレンダリングする時間がないため、あまりに多くを望むと......。

string name="probe";
/////
void OnStart()
  {
   func();
   func();

   ObjectDelete(name);

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void func()
  {
   ObjectCreate(0,name,OBJ_LABEL,0,0,0);
   ObjectSetString(0,name,OBJPROP_TEXT,name);

   Sleep(500);

   string text=ObjectGetString(0,name,OBJPROP_TEXT);

   int text_sizeX=int(ObjectGetInteger(0,name,OBJPROP_XSIZE));
   Alert(text," ",text_sizeX);

  }
//+------------------------------------------------------------------+
 

Operaブラウザ

オペラ 34.0

ウェブでより多くのことをする

バージョン情報

バージョン34.0.2036.25- 最新バージョンのOperaを 使用しています。
チャンネルを更新しました。安定した
システムです。Windows 10 64ビット版(WoW64)

ブラウザーID

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36 OPR/34.0.2036.25

SRCを使用して新規メッセージを挿入すると、SRCテキストが消えます。

SRCを使用・挿入して更新する場合は問題ありません。

 
Vladimir Pastushak:

オブジェクトがレンダリングする時間がないため、多くを望みすぎる...

かっこいいですね。

さて、これをインジケータに実装して、ティックなしで(週末に)動作するようにするのを手伝ってください。

 
Slawa:
テキストラベルがレンダリングされない限り、サイズは不明である。ここではっきりしないことは何でしょうか。

ティックを使わないインジケーターで、この問題を解決する方法はありますか?

そして、以前から言っていることですがレンダリングなしで文字そのものは取得できるのに、サイズが取得できないのは不思議です。

 
Vasyl Nosal:

かっこいいですね。

今度はインジケータに実装して、ティックなしで(週末に)動作するようにするのを手伝ってください。

---

//+------------------------------------------------------------------+
//|                                                        proba.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window

string name="probe";
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   EventSetTimer(1 /*переодичность в секундах*/); // 
                                                  // или
//bool  EventSetMillisecondTimer( 
//int  milliseconds      // количество миллисекунд 
//);
   ObjectCreate(0,name,OBJ_LABEL,0,0,0);
   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(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ObjectSetString(0,name,OBJPROP_TEXT,name);
   string text=ObjectGetString(0,name,OBJPROP_TEXT);
   int text_sizeX=int(ObjectGetInteger(0,name,OBJPROP_XSIZE));
   Alert(text," ",text_sizeX);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(name);
   EventKillTimer();
  }
//+------------------------------------------------------------------+
 
Vladimir Pastushak:

---

ありがとうございます。しかし、文字の大きさを知るのは、控えめに言っても面倒です。

レンダリングせずに文字サイズを知ることができるのに、文字サイズがわからないのはなぜですか?

 
Vasyl Nosal:

ありがとうございます。しかし、文字の大きさを知るのは、控えめに言っても面倒です。

なぜ、レンダリングをしなくてもテキスト自体はわかるのに、そのサイズがわからないのか?

おそらく、レンダリングするテキストは変数に格納されており、そこから取得するのですが、テキストを作成するために何千ピクセルものオブジェクトを作成しなければならないのです。

また、お渡ししたコードは、あくまで実行時の実装例です。