LOM.d32 - Библиотека дополнительных классов для RSL
Скачать (RAR-файл; Размер - 87486)Обсудить в форуме
Описание
Библиотека дополнительных классов для RSL.
1. Виртуальная таблица
2. Сравнение строк с шаблоном
3. Копирование файлов по протоколу FTP
1. Виртуальная таблица
2. Сравнение строк с шаблоном
3. Копирование файлов по протоколу FTP
Текст примера
----------------------------------------------------------------------- Класс-контейнер TLomCursor(pBaseClass:Object) ----------------------------------------------------------------------- Виртуальная таблица - предназначена для хранения временных данных в виде таблицы не создавая её физически. Для определения структуры полей используется пользовательский базовый класс (pBaseClass). Пример базового класса: CLASS TAcc VAR Account = ""; VAR Chapter = 0; VAR Sum = $0.00; VAR RestDate = TArray; END; В качестве полей можно использовать объекты(например TArray). Методы класса: аналогичные методам класса Tbfile: Rewind, Next, Prev, Insert, Delete, Update, GetDirect, GetPos, Nrecords, FldIndex, Item; специфичные методы: Sort() - Сортировка. В качестве параметров передаются наименования полей или их номера(нумерация с 0) через запятую. Если в качестве последнего параметра передается false, то сорти- ровка происходит по убыванию. Иначе, если последний пара- метр равен true или не является типом V_BOOL, сортировка происходит по возрастанию. После выполнения метода происходит rewind. пример: Sort ("Chapter", "Account"); Sort (1,0); Sort (1,0,false); Seek(pName, pParm[, pRewind]) - Поиск записи у которой поле pName равно значению pParm. Если параметр pRewind равен True или не установлен, то предварительно выполняется Rewind, иначе поик идет с текущей записи. При добавлении новой записи необходимо использовать метод Clear: MyAcc = TLomCursor(TAcc); MyAcc.Clear; MyAcc.Rec.Account = "999981000000000000"; MyAcc.Rec.Chapter = 3; MyAcc.Rec.Oper = 9999; MyAcc.Insert; Объекты данного класса можно использовать в Grid-е библиотеки VCH, если в файле VCH.MAC в методе Grid.AddField(fld:TField) заменить строку idx = FldIndex(dbfile, fld.Name) на idx = dbfile.FldIndex(fld.Name). Необходимо так же учитывать то, что чем больше записей, тем больше требуется для объекта оперативной памяти на сервере. Рекомендуемый размер виртульной таблици не более 20 тыс. записей. ----------------------------------------------------------------------- Класс для работы с шаблонами TLomTmpl([Parm:string]) ----------------------------------------------------------------------- Свойства: Separator - признак учета разделителя в шаблоне(;). По умолчанию равен true. Используется для метода Compare Метод для сравнения строк: Compare(Строка:sting,Шаблон:string) - сравнивает строку с шаблоном. Если строка соответсвует шаблону, то возвращает true, иначе false. Пример: Obj.compare("4550181000000000111","455?1*") Obj.compare("4550181000000000111","455?1*;455?2*"); Методы для сравнения счетов с установленным шаблоном: SetTmplAcc(Строка:string) - устанавливает шаблон для работы со счетами по первым символам, понимает знаки "!", ":", "?",";" и ",". Можно установить шаблон и в момент инициа- лизайии объекта, есле передать ему первый параметр в качестве шаблона. !!! Не поддерживает знак "*" !!! Пример: Obj = TLomTmpl(); Obj.SetTmplAcc("450:457(02,04:06);!45305"); Или так: Obj = TLomTmpl("450:457(02,04:06);!45305"); В данном примере указан шаблон для балансовых счетов : 45002, 45004, 45005, 45006, 45102 и т.д., исключая балансовый счет 45305. CompareAcc(Строка:string) - метод сравнивает строку с шаблоном указанным функцией SetTmplAcc(Строка:string). Если строка соответсвует шаблону, то возвращает true, иначе false. Пример: import lom; file acc(account); ob = TLomTmpl; ob.SetTmplAcc("450:457(02,04:06);!45305"); InitProgress(Nrecords(acc),"","Просмотр лицевых счетов"); rewind(acc); i = 0; while(next(acc)) i = i + 1; UseProgress(i); if(ob.CompareAcc(acc.Account)) println(acc.Account); end; end; RemProgress(); Методы работы с формулами-шаблонами для счетов: Допускается работа с формулами типа: 1. "455(01:02) + 454(01,02,03)/423*422"; 2. "455(01:02) + Если(455>454, Число(1), Число(2))"; Для работы с формулой необходимо: 1. Установить формулу методом SetTmplAcc(Формула:string) или указать параметр в момент инициализации объекта. 2. Заполнить значения из формулы с помощью методов NextTmpl(Строка:string) и SetValue(val); 3. Получить результат методом GetValue - возвращает значение типа V_DOUBLE; SetTmplAcc(Строка:string) - устанавливает формулу. NextTmpl(Формула:string) - переход к следующему элементу формулы, при успешном выполнении вернёт true и установит значение Формула равным этому элементу. SetValue(val) - устанавливает на место текщего элемента значение val. Val может быть следующих типов : V_DOUBLE, V_DOUBLEL, V_MONEY, V_MONEYL, V_INTEGER. При установке, значение преобразуется в тип V_DOUBLE. GetValue() - возвращает результат формулы. GetFormula() - возвращает формулу. Если метод вызван после GetValue(), то возвращает формулу где все элементы заменены на их результат. Refresh() - возвращает позицию для NextTmpl в начало формулы. В формулах можно использовать функцию ЕСЛИ(IFF), которая аналогична такой же в MS EXCEL. Для ввода в формулу любого не изменяемого значения предусмотрена функция ЧИСЛО(VAL). Пример: import lom, BankInter; file acc(account); var МежфилРасчетыПасс = "ЕСЛИ((303(02,04)-303(01,03,05))<ЧИСЛО(0),303(01,03,05),ЧИСЛО(0))"; var ob = TLomTmpl, CurAcc, stat, Result; ob.SetTmplAcc(МежфилРасчетыПасс); while(ob.NextTmpl(CurAcc)) Result = $0.00; acc.Account = CurAcc; stat = GetGE(acc); while(stat and ob.Compare(acc.account,CurAcc+"*")) Result = Result + RestA(acc.account); stat = Next(acc); end; ob.SetValue(Result); end; println(ob.GetValue); println(ob.GetFormula); ----------------------------------------------------------------------- TLomFTP() - Клиент FTP ----------------------------------------------------------------------- Класс для копирования файлов по протоколу FTP; Свойства: szProxy - Адрес Proxy в локальной сети szHost - Адрес FTP-сервера intPort - Порт FlagActv - Режим: false - пассивный(по умолчанию),true - активный szDir - Директория поиска файлов на сервере szUser - Логин szPass - Пароль TmplFile - Шаблон файлов(по умолчанию "*.*") isDelete - Признак удаления файлов c сервера(по умолчанию false) szLoclDir - Локальный путь для копирования файлов ReportArr - Список полученных файлов. Имеет следующие свойства: FileName - имя файла Message - сообщение о результате копирования CodeErr - код ошибки Методы: Connect - установить соединений(при успехе вернет true) CloseConnect - разорвать соединение CopyFile - поиск и копирование файлов(при успехе вернет true)