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)

,