!=====================================================================================
! Класс для работы с CSV-файлами.
! Вячеслав Черников, г.Рязань, 2017г.
!=====================================================================================

!=====================================================================================
! Класс: работа с CSV-файлами.
! Пример вызова.
!
! FsCSVL    FsCSV
!
! FsCSVL.Kill                             !уничтожаем класс (необязательно)
!
!=====================================================================================

QueueCSVType  Queue, type     !буфер для формирования строки
BufStr    STRING(1024)        !строка буфера
end

QueueStructCSVType  Queue, type    !структуры
StructName    STRING(20)           !наименование структуры
StructFields  LONG                 !количество полей в структуре
StructNums    BYTE, DIM(100)       !переназначение полей при загрузке
StructRef     &QUEUE               !ссылка на структуру
StructField   ANY, DIM(100)        !ссылки на поля структуры
end



FsCSV    CLASS,TYPE,MODULE('FsCSV.CLW'),LINK('FsCSV.CLW')
Active        BYTE,       PRIVATE          !флаг активности

BufPoint        LONG                        !указатель в буфере
BufPointMax     LONG                        !максимальное значение указателя
StructFieldsMax LONG                        !максимальное количество полей в структуре

FileNameCSV    STRING(128)                  !имя csv-файла

ErrorCode      BYTE                         !код ошибки
ErrorMessage   STRING(1024)                 !сообщение об ошибке

QueueBuf       &QueueCSVType                !буфер для формирования строки
QueueStructCSV &QueueStructCSVType          !структуры

Init            PROCEDURE              !инициализация класса
Kill            PROCEDURE              !отключение класса
Destruct        PROCEDURE              !деструктор

SetStruct       PROCEDURE (STRING pName, *QUEUE pQueue)   !установить структуру группы
ExportGroup     PROCEDURE (STRING pName, *GROUP pGroup)   !экспортировать группу 
ExportQueue     PROCEDURE (STRING pName, *QUEUE pQueue)   !экспортировать очередь
ImportFile      PROCEDURE (STRING pName, BYTE pReg)       !импортировать файл
ImportRec       FUNCTION (STRING Str), STRING             !импортировать запись

AddStrInt       PROCEDURE (STRING Str)     !добавить строку в буфер
AddStrInt2      PROCEDURE (STRING Str)     !добавить фрагмент строки в буфер
MakeFile        PROCEDURE (STRING pName)   !сформировать файл
StrReplace      FUNCTION (STRING Str, STRING StrSource, STRING StrTarg), STRING   !замена символов в строке
StrReplaceSpec  FUNCTION (STRING Str), STRING      !замена специальных символов в строке (экспорт)
StrReplaceSpecImp  FUNCTION (STRING Str), STRING   !замена специальных символов в строке (импорт)
             END
