Sergey Kosinsky Personal web site

Функция  WriteDataEx() 

Функция WriteDataEx является расширенной версией функции WriteData() и позволяет записать в текстовый файл с расширенными возможностями по форматированию до шести массивов данных, сформированных в каком либо индикаторе. Каждая строка такого файла содержит несколько колонок, разделенные запятыми или другими символами: дату, время и одну или более колонок данных.    

Формат вызова функции WriteDataEx приведен ниже:

ExtFml( "msx_ksr.WriteDataEx", "FormatString", DataArray1[], DataArray2[], DataArray3[], DataArray4[], DataArray5[], DataArray6[], WriteDown[], "FileName")

где:

"FormatString" - строка форматирования, содержащая метасимволы форматирования.

DataArray1[]...DataArray6[] - до шести различных индикаторов(массивов данных).

WriteDown[] - должен иметь значение true для того, чтобы данные текущего отсчета были записаны в файл. Значение может формироваться динамически, позволяя записывать отсчеты выборочно.

"FileName" - имя файла для вывода. Может содержать полный путь, в противном случае относительный путь отсчитывается от рабочего каталога запуска Метастока MSWin.exe

Недостающее количество DataArray[] параметров должно быть заполнено  константами, например 0, которые Метасток автоматически преобразует в массив из всех нулей;
     В имени файла можно использовать макроподстановки %S  и %P - вместо них будет подставлено название базовой бумаги и периодичность. В этом случае название базовой бумаги не должно содержать ":\/?*" и другие символы, запрещенные в именах файлов. 

Строка форматирования

Строка форматирования "ФорматString" состоит из двух частей. Первая часть отвечает за форматирование даты и времени, вторая - за форматирование каждого из DataArrayN[]. Первая часть от второй отделяется пайп символом "|". Если пайп символ отсутствует, считается, что первая часть имеет значение по умолчанию. Если строка форматирования пустая, то считается, что строка форматирования массивов также имеет значение по умолчанию.

Метасимволы форматирования даты и времени

Строка форматирования даты и времени может содержать следующие метасимволы

 

c  - отображает дату с использованием правил форматирования заданных в настройках "Язык и стандарты"  для краткого формата даты и длинного формата времени*

d  - отображает порядковый  номер дня месяца без лидирующего нуля (1-31)

dd  - отображает порядковый  номер дня месяца с лидирующим нулем (01-31)

ddd  - отображает день как сокращенное названия дня недели*

dddd отображает день как полное названия дня недели*

ddddd -  формат определяется настройками для краткого формата даты*

dddddd -  формат определяется настройками для полного формата даты*

m  - отображает порядковый номер месяца без лидирующего нуля (1-12)**

mm - отображает порядковый номер месяца с лидирующим нулем (01-12)**

mmm - сокращенное название месяца*

mmmm - полное название месяца*

yy - отображает двухзначное значение года

yyyy - отображает четырехзначное значение года

h  - отображает час без лидирующего нуля (0-23)

hh - отображает час с лидирующим нулем (00-23)

n - отображает минуту без лидирующего нуля (0-59).

nn - отображает минуту с лидирующим нулем (00-59).

s - отображает секунду без лидирующего нуля (0-59).

ss - отображает секунду с лидирующим нулем (00-59).

'xx' - Characters enclosed in single quotes are displayed as-is, and do not affect formatting.    

Примеры форматирования даты и времени: 

"mm'/'dd'/'yyyy','hh':'nn':'ss','|" соответствует "12/20/2004,16:47:55," 

"yyyymmdd','hhnnss','|" соответствует "20041220,164755,"  

"dd-mmm-yy|" соответствует "20 Дек 04"  

"dd-mmmm-yy|" соответствует "20 Декабрь 04"  

 

Примечания:
* -  сокращенные буквенные названия дней недели, месяцев или правила форматирования зависят от локализации операционной системы и могут отличаться  даже на одной версии Windows.
** - если предыдущий слева метасимвол был hh или h, то m и mm трактуется как порядковый номер минуты аналогично действию n и nn.

Метасимволы форматирования значений индикаторов

     Формализованный метасимвол форматирования значения индикатора состоит из нескольких спецификаторов и выглядит так:

"%"  ["-"] [width] ["." prec]  type

где:

"%" - начало любого метасимвола, после которого следуют все остальные спецификаторы.

["-"]  - необязательный спецификатор выравнивания влево.

[width] - необязательный спецификатор максимального количества выводимых символов.

["." prec] - необязательный спецификатор точности выводимого числа - количество знаков после запятой или общего количества значащих цифр.

type - одна из латинских букв f, g, e, m определяющая вид форматирования - фиксированный, обычный, научный или денежный.

 

Примеры результатов форматирования для числа 12.3456 :

"%f" "12.34" По умолчанию остаются 2 знака после запятой
"%10.1f"  "      12.3" Недостающие до общего заданного кол-ва символов слева добавляются пробелами. Дробная часть округлена до заданной точности. 
"%-10.1f" "12.3      " Тоже, но недостающие символы добавляются справа.
"%g" "12.3456" Выбирается тот вид представления между фиксированным и научным, который позволяющий получить меньшее количество выводимых символов (компактность).
"%e" "1.23456E1" Научное представление с мантиссой и порядком.
"%m" "12.23р." Денежное представление с двумя знаками после запятой.

     Все символы, не входящие в состав метасимвола, передаются без изменений, строка форматирования значения индикатора должна содержать не более 7 метасимволов. Для разделения выводимых данных на колонки запятые между метасимволами должны быть заданы явно.

Примеры строк форматирования и выводимых значений

По умолчанию применяется форматирование, аналогичное следующей строке:

 

"YYYYMMDD,HHNNSS'0',|%g,%g,%g,%g,%g,%g"

например:

 

ExtFml( "msx_ksr.WriteDataEx", "", 123.456789, 123.456789, 123.456789, 123.456789, 123.456789, 123.456789, TRUE, "c:\FileName.ext");

выведет следующую строку:

20041220,1040000,123.457,123.457,123.457,123.457,123.457,123.457

 

Примеры применения различных спецификаторов наглядно видны ниже:

 

ExtFml( "msx_ksr.WriteDataEx", "c,|%.3g,%.f,%.3f,%4f,%.5g,%.3e", 123.456789, 123.456789, 123.456789, 123.456789, 123.456789, 123.456789, TRUE, "c:\FileName.ext");

выводит:

20.12.2004 10:40:00,123,123.457,123.457,123.46,123.456787109375,1.23E+002

 

Примечание. На данный момент функция WriteFileEx() включена в состав msx_ksr.dll.

Замечания и предложения можно оставить на странице обратной связи.

FAQ по MSX_KSR.dll
/ksr
Сергей Р. Косинский,
Санкт-Петербург, Россия.
Создано: 20 декабря 2004 г.

Обновлено: February 12, 2011

www.000webhost.com