Скачать MetaTrader 5

Табуляция. MQL5

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Вся активность участников MQL5.community на одной странице!
Vladimir Karputov
Модератор
45564
Vladimir Karputov 2016.03.26 15:22 

Стала задача вывести текст с табуляцией. Например вот как будет выглядеть текст с табуляцией в 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".

 

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

Vladimir Karputov
Модератор
45564
Vladimir Karputov 2016.03.26 15:44  

Терминал:

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
Alexandr Bryzgalov
27408
Alexandr Bryzgalov 2016.03.26 16:13  
Karputov Vladimir:

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

от того что табуляция это один символ, а MetaEditor это не Word
Alexandr Bryzgalov
27408
Alexandr Bryzgalov 2016.03.26 16:17  

надо так )

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

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

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

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

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

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

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

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

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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий