MQL4 中 ObjectSetText 的最大字符串大小或字符串长度是多少?

时间:2021-04-17 16:11:35

标签: string object mql4 truncation

Comment(MSGARRAY[0], "\n" , 
MSGARRAY[01], "\n" , 
MSGARRAY[02] , "\n" , 
" error:" , err, "\n" ,   
"") ; 

不截断字符串(见下图中左上角的黄色文本)但是

  ObjectCreate(tLabel,23,0,Time[0],PRICE_CLOSE);
  ObjectSet(tLabel, OBJPROP_CORNER, myCorner );
  ObjectSet(tLabel,OBJPROP_XDISTANCE,xPos);
  ObjectSet(tLabel,OBJPROP_YDISTANCE,yPos);
  ObjectSetText(tLabel,name,myFontSize,myFont,Color); 

截断。

我做错了什么/做错了什么?

谢谢

编辑: 我正在从文件中读取文本,这就是截断发生的地方。

int h = FileOpen(FileName, FILE_TXT|FILE_READ); 

if(h != INVALID_HANDLE) 
{ 

Comment("File "+FileName+" not found in MQL FILES FOLDER."); 

for (int c=0; !FileIsEnding(h) && c<9999; c++) 
{ 
     if (FileIsEnding(h)) break; 

     MSGARRAY[c]=FileReadString(h); 
} 

     FileClose(h); 
} 
else 
{ 
     Comment(FileName +" not found in MQL FILES FOLDER. OR... File Must Be Open..."); 

} 

code output

1 个答案:

答案 0 :(得分:0)

作为对象的文本的最大文本长度为 63 个字符。您可以使用以下代码看到这一点:

   string id="test";
   ObjectCreate    (0, id, OBJ_LABEL, 0, 0, 0);
   ObjectSet       (id, OBJPROP_CORNER, 0);
   ObjectSet       (id, OBJPROP_XDISTANCE, 10);
   ObjectSet       (id, OBJPROP_YDISTANCE, 10);
   ObjectSetText   (id, "12345678901234567890123456789012345678901234567890123456789012345", 10, "Arial", clrBlack);

解决方案是使用两个对象,您可以使用 TextGetSize() 找到第二个对象的偏移量。

相关问题