错误、漏洞、问题 - 页 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:

谢谢你。但要知道文字的大小,说起来很麻烦。

为什么我们可以不通过渲染就知道文本本身,却不知道它的大小?

也许要渲染的文本存储在一个变量中,我们从中检索出来,你必须创建一个数千个像素的对象来创建文本。

而我给你的代码只是一个运行时实现的例子。