Табуляция. MQL5

 

Стала задача вывести текст с табуляцией. Например вот как будет выглядеть текст с табуляцией в Word:

Текст с табуляцией

 

Про табуляцию сказано в разделе Символьные константы:

Название символа

Мнемокод или изображение

Запись в MQL5

Числовое значение

горизонтальная табуляция

HT

'\t'

9


Пример для вывода на печать текста с табуляцией:

//+------------------------------------------------------------------+
//|                                                  ProjectName.mq5 |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   string test="temp";
   StringSetCharacter(test,4,'\t'); 
   Print(test+"ds");
  }
//+------------------------------------------------------------------+

 

Получаю:

temp ds

хотя ожидаю, что-то вроде:

temp    ds

Другими словами я ожидал, что вставка табуляции в конце "temp" должна сдвинуть курсор на позицию табуляции и это, соответственно, сдвинет второе слово - "ds".

 

Может я неправильно вывожу табуляцию? 

 

Терминал:

2016.03.26 13:38:44.871 Terminal        MetaTrader 5 x64 build 1281 started (MetaQuotes Software Corp.)
2016.03.26 13:38:44.872 Terminal        Windows 10 Pro (x64 based PC), IE 12.62, UAC, Intel Core i3-3120M  @ 2.50GHz, RAM: 1153 / 3981 Mb, HDD: 41632 / 233310 Mb, GMT+02:00
2016.03.26 13:38:44.872 Terminal        C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\0CFEFA8410765D70FC53545BFEFB44F4
 
Karputov Vladimir:

Может я неправильно вывожу табуляцию? 

от того что табуляция это один символ, а MetaEditor это не Word
 

надо так )

//+------------------------------------------------------------------+
//|                                                  ProjectName.mq5 |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   string test="temp";
   StringSetCharacter(test,4,'\t','\t','\t','\t'/*тут сколько нужно символов вместо табуляции*/); 
   Print(test+"ds");
  }
//+------------------------------------------------------------------+
 
Вставка символа табуляции не приводит к смещению текста в позицию табуляции не только при распринтовке в Журнале, но и при попытке вставить символ табуляции в объект класса CListView.
 
Работает только кое-где, в комментах, в алертах возможно, в остальных местах надо ручками форматировать
 
Комбинатор:
Работает только кое-где, в комментах, в алертах возможно, в остальных местах надо ручками форматировать
Вот, вот! Кое-где. В общем хочется уточнения в документации, для чего табуляция применяется? А вручную сильно не отформатируешь, если иметь дело с переменными типа string (про канвас сейчас разговор не идёт).
 
Как старый пользователь ассемблера, рекомендую чем более примитивный код, тем он лучше компилируется и переносит апдейты. Зачем вам табуляция, которую каждый язык компилирует на своё усмотрение? Ставьте жесткие параметры и будет работать долго и надёжно.
 
Vladimir Zubov:
Как старый пользователь ассемблера, рекомендую чем более примитивный код, тем он лучше компилируется и переносит апдейты. Зачем вам табуляция, которую каждый язык компилирует на своё усмотрение? Ставьте жесткие параметры и будет работать долго и надёжно.

Была идея форматировать текст в текстовом поле на манер таблицы (вставляя знак "|"):

  текст колонки 1 |  текст колонки 2 |  текст колонки 3 |  текст колонки 4 |
  текст колонки 1 |  текст колонки 2 |  текст колонки 3 |  текст колонки 4 |
  текст колонки 1 |  текст колонки 2 |  текст колонки 3 |  текст колонки 4 |
 
Так сделайте просто примитивную функцию, передавайте в неё насколько нужно отступ, другими словами напишите сами табуляцию. Будет работать всегда и не зависеть от терминала. 
 
Vladimir Zubov:
Так сделайте просто примитивную функцию, передавайте в неё насколько нужно отступ, другими словами напишите сами табуляцию. Будет работать всегда и не зависеть от терминала. 

Простой пример:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("   1400%   |");
   Print("    840%   |");
   Print("     90%   |");
   Print("      8%   |");
  }

а вот вывод в журнал и в объект класса CListView:

вывод в Журнал  и Вывод в CListView