Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира

   Авторские страницы  >>   Программы Дмитрия Белошистова

  BDSLIB 1.3 - Набор модулей на BP 7.0 на разные случаи жизни       Dmitry Beloshistov 26.03.2001

BASE64.PAS - Mime (Base64) кодирование/декодирование
CRC.PAS - расчет CRC16, CRC32
FACRYPT.PAS - простой шифровальщик файлов
FADATE.PAS - работа с датой и временем
FAMATH.PAS - математические функции
CFGRD3.PAS - чтение текстовых конфигов
INIFILE.PAS - работа с Windows INI файлами
PARLIST.PAS - еще один вариант для работы с текстовыми конфигами
FADMIN.CFG - пример текстового конфига
REPORTS.PAS - построение текстовых отчетов
FIN.TXT - пример шаблона отчета

 24k
 

Описание модуля Base64 ---------------------------------------------------------------------------- Procedure CodeBase64 (InFile,OutFile:String); Выполняет кодирование файла InFile в Base64. Результат сохраняется в файле OutFile. Procedure DeCodeBase64(InFile,OutFile:String); Выполняет декодирование файла InFile в Base64. Результат сохраняется в файле OutFile. Описание модуля CfrRd3 ---------------------------------------------------------------------------- Модуль содержит обьект TCfgReader - обьект по работе с конфигом. PCfgReader=^TCfgReader; TCfgReader=object(TObject) Error:boolean; PCfgCol:PStringCollection; Constructor Init(CfgFileName:string); Destructor Done; virtual; Procedure GetCfgFlag(CfgFlagName:string; var CfgValue:string); Function sGetFlag(CfgFlagName:string):string; Function nGetFlag(CfgFlagName:string):longint; Function rGetFlag(CfgFlagName:string):real; end; Описание полей и методов обьекта: Error:boolean - переменная, являющаяся флагом ошибки. Error=TRUE индицирует ошибку при чтении/обработке конфига. PCfgCol:PStringCollection - коллекция строк конфига. Constructor Init(CfgFileName:string) - конструктор. На вход передается им файла конфигурации. Destructor Done - деструктор Procedure GetCfgFlag(CfgFlagName:string; var CfgValue:string) - получить значение переменной из конфига. Параметры: CfgFlagName - имя переменной конфига. CfgValue - строка со значением переменной. Если переменная CgfFlagName не найдена в конфиге - в CfgValue вернется пустая строка. Function sGetFlag(CfgFlagName:string):string - получить значение переменной конфига в виде строки Function nGetFlag(CfgFlagName:string):longint - получить значение переменной конфига в виде целого числа Function rGetFlag(CfgFlagName:string):real - получить значение переменной конфига в виде дробного числа. Вспомогательная функци Function ReadConfigFile(ConfigFile:String):PCfgReader; Возвращает указатель на обьект TCfgReader или nil при ошибке чтения конфига. Синтаксис текстого конфигурационного файла файла: ; This is comment string MyStrValue=This is my str value!!! ; комментарий MyIntValue=12345 ; MyFloatValue=10.23 ; MyUnavailValue= ; переменная как пустая строка. Описание модуля CRC ---------------------------------------------------------------------------- Модуль для расчета CRC16/CRC32. Функции по получению значения для очередного байта/слова из входного потока. Напрямую использовать данные функции бессмысленно. Function CRC16(cp: Byte; crc: Word): Word; Function CRC32(value: Byte; crc: LongInt):LongInt; Function CRCend( crc : LongInt ) : LongInt; Procedure InitTablesDefault; Инициализация таблиц для расчета CRC по умолчанию Procedure InitCrc16Table(TablePtr:PCrc16Tab); Инициализация таблицы для расчета CRC16. Может быть использована при необхо- димости задания таблицы расчета CRC пользователем. Procedure InitCrc32Table(TablePtr:PCrc32Tab); Инициализация таблицы для расчета CRC32. Может быть использована при необхо- димости задания таблицы расчета CRC пользователем. Function FileCRC16(FileName:String):Word; Расчет CRC16 для файла FileName. Function FileCRC32(FileName:String):Longint; Расчет CRC32 для файла FileName. Описание модуля FACRYPT ---------------------------------------------------------------------------- Function GenPassword(MaxLen:byte):String - функция по генерации пароля из случайного набора символов (диапазон допустимых для парол символов за дается во множестве PswChars) Procedure GenKeyFile(MaxLen:Word;FileName:String) - процедура генерации ключевого файла. Procedure CriptFile_Psw(Psw,SourceFile,DestFile:String; CriptFlag:boolean) - процедура по шифрофке/расшифровке файла с использованием пароля. Psw - пароль SourceFile,DestFile - исходный и зашифрованный файлы соответственно CriptFlag - если TRUE то выполняется шифрование иначе - дешифровка Procedure CriptFile_Key(SourceFile,DestFile,KeyFile:String; CriptFlag:boolean) - процедура по шифрофке/расшифровке файла с использованием ключевого файла. SourceFile,DestFile - исходный и зашифрованный файлы соответственно KeyFile - ключевой файл CriptFlag - если TRUE то выполняется шифрование иначе - дешифровка const PswChars:TCharSet=[#33..#126] - диапазон допустимых для пароля символов Описание модуля FADATE ----------------------------------------------------------------------------- Procedure ClrDateTime(var Dt:DateTimeRec); Все поля в Dt устанавливаются в 0. Procedure Date(var Dt:DateTimeRec); Возвращает текущую дату. Procedure Time(var Dt:DateTimeRec); Возвращает текущее время. Procedure Now(var Dt:DateTimeRec); Возвращает текущую дату и время. Procedure EncodeDate(ADay,AMonth,AYear:Word; var Dt:DateTimeRec); Переводит Day,Month,Year в DateTimeRec Procedure EncodeTime(AHour,AMin,ASec:Word; var Dt:DateTimeRec); Переводит Hour,Min,Sec в DateTimeRec Procedure DecodeDate(Dt:DateTimeRec; var Day,Month,Year:Word); Переводит DateTimeRec в Day,Month,Year Procedure DecodeTime(Dt:DateTimeRec; var Hour,Min,Sec:Word); Переводит DateTimeRec в Hour,Min,Sec Function IsLeapYear(Year:Word):boolean; Проверка високосности года. Function DaysInMonth(Month,Year:Word):Word; Возвращает число дней в месяце Month для года Year. Function ValidDate(Dt:DateTimeRec):boolean; Проверка допустимости даты. function CurrentYear: Word; Возвращает текущий год. Function DayOfWeek(Dt:DateTimeRec):integer; Возвращает день недели. Function DateToLong(Dt:DateTimeRec):longint; Переводит дату в число дней после 01/01/0001 Function DayBetween(Dt1,Dt2:DateTimeRec):longint; Считает число дней между датами. Procedure LongToDate(L:longint; var Dt:DateTimeRec); Переводит число дней после 01/01/0001 в дату. Procedure HowOldAsDate(WasBorn:DateTimeRec; var Old:DateTimeRec); Возвращает возраст человека по дню рождения. Procedure HowOldAsDMY(WasBorn:DateTimeRec; var Days,Months,Years:Word); Возвращает возраст человека в годах, месяцах, днях. Function DateToStr(Dt:DateTimeRec):String; Перевод даты в строку. Function TimeToStr(Dt:DateTimeRec):String; Перевод времени в строку. Function DateTimeToStr(Dt:DateTimeRec):String; Переводит дату и время в строку. Function FormatDateTimeRec(Format:dtFormat; Dt:DateTimeRec):String; Перевод дату и время в строку по формату. Procedure StrToDate(S:String; var Dt:DateTimeRec); Перевод строки в дату. Procedure StrToTime(S:String; var Dt:DateTimeRec); Перевод строки во время. Procedure StrToDateTime(S:String; var Dt:DateTimeRec); Перевод строки в дату и время. Function LongDateStrL(Dt:DateTimeRec):String; Длинное представление даты Function LongTimeStrL(Dt:DateTimeRec):String; Длинное представление времени. Function LongDateStr(Dt:DateTimeRec):String; Длинное представление даты. Function LongTimeStr(Dt:DateTimeRec):String; Длинное представление времени. Function DayName(Dt:DateTimeRec):String; Имя дня недели. Описание модуля FAMATH ----------------------------------------------------------------------------- Надеюсь, школьный курс математики не забыли?-)))) Множество тригонометрических функций. Описение модуля INIFILE ----------------------------------------------------------------------------- Модуль содержит обьект по работе с INI-файлами. PIniFile=^TIniFile; TIniFile=object(TObject) IniFile:PString; F:Text; OldFAttr:Word; Error:Byte; Constructor Init(AIniFile:String); Destructor Done; virtual; Function ReadStrValue(Section,Param,DefValue:String):String; Function ReadIntValue(Section,Param:String; DefValue:Longint): longint; Function ReadFloatValue(Section,Param:String; DefValue:Real): Real; Function SectionExists(Section:string):boolean; Function ParamExists(Section,Param:String; var IniStr:String): boolean; Procedure WriteStrValue(Section,Param,Value:String); Procedure WriteIntValue(Section,Param:String;Value:longint); Procedure WriteFloatValue(Section,Param:String;Value:real); end; Поля и методы. IniFile - имя файла F - рабочая переменная/файл. OldFAttr - старый атрибут файла (для сохранения/восстановления) Error - индикатор ошибки. Если =0 - ошибок нет. Constructor Init(AIniFile:String) - конструктор, принимает имя файла. Destructor Done - деструктор Функции по работе с файлом. Для всех параметры имеют значение: Section - имя секции Param - имя переменной секции DefValue - значение переменной по умолчанию Value - новое значение переменной Function ReadStrValue(Section,Param,DefValue:String):String - получить строку из файла. Function ReadIntValue(Section,Param:String; DefValue:Longint):longint - получить целое число. Function ReadFloatValue(Section,Param:String; DefValue:Real):Real - получить дробное число. Function SectionExists(Section:string):boolean - проверка существования секции. Function ParamExists(Section,Param:String; var IniStr:String):boolean - проверка существования параметра в секции (возвращает строку с параметром) Procedure WriteStrValue(Section,Param,Value:String) - записать строку в файл. Procedure WriteIntValue(Section,Param:String;Value:longint) - записать целое. Procedure WriteFloatValue(Section,Param:String;Value:real) - записать дробное в файл. Описание модуля PARLIST ---------------------------------------------------------------------------- Модуль написан для обработки конфигов из строк: PARAM=VALUE. Обьект списка строк. Является наследником TStringCollection. PLineCollection=^TLineCollection; TLineCollection=object(TStringCollection) Procedure Change(Index:integer; NewValue:String); Procedure Add(S:String); Procedure AddStrings(SC:PStringCollection); Procedure LoadFromFile(FileName:String); Procedure SaveToFile(FileName:String); end; Методы: Procedure Change(Index:integer; NewValue:String) заменить строку с заданным индексом на новую. Procedure Add(S:String) - добавить строку в список Procedure AddStrings(SC:PStringCollection) - добавить строки из другой кол- лекции Procedure LoadFromFile(FileName:String) - загрузить список из файла. Procedure SaveToFile(FileName:String) - сохранить список в файл. Обьект по работе с конфигом. Принцип работы - входной поток из строк Param=Value разбивается на два списка (в одном имена параметров, в другом - значение). Таким образом достигается более высокая скорость обработки. PParamList=^TParamList; TParamList=object(TObject) Params:PStringCollection; Values:PStringCollection; DeleteComments:boolean; ParamEquChar:Char; CmtChar:Char; constructor Init(ADelCmt:boolean; ParEquChar,ACmtChar:Char); Destructor Done; virtual; Procedure AddStrings(SC:PStringCollection); Procedure Add(S:String); Procedure Delete(Index:integer); Function GetParam(Index:integer):String; Function GetValue(Index:integer):String; Function Strs(Index:integer):String; Function ValueByParam(ParamName:String):String; Procedure SplitParamValue(S:String; var Param,Value:String); Procedure LoadFromFile(FileName:String); Procedure SaveToFile(FileName:String); Function GetParamIndex(ParamName:String):integer; Procedure SetParam(ParamName,NewValue:String); Procedure DeleteParam(ParamName:String); end; Методы Params:PStringCollection; - список параметров Values:PStringCollection; - список значений DeleteComments:boolean; - флаг, указывающий на то, что комментарии нужно удалять ParamEquChar:Char; - символ равенства между параметром и значением CmtChar:Char; - символ начала коментари constructor Init(ADelCmt:boolean; ParEquChar,ACmtChar:Char) - конструктор Destructor Done; - деструктор Procedure AddStrings(SC:PStringCollection) - добавить строки из другой коллекции Procedure Add(S:String) - добавить строки Procedure Delete(Index:integer) - удалить строку Function GetParam(Index:integer):String - получить имя параметра Function GetValue(Index:integer):String - получить значение Function Strs(Index:integer):String - получить строку в виде параметр+значение Function ValueByParam(ParamName:String):String - получить значение по имени параметра Procedure SplitParamValue(S:String; var Param,Value:String) - разбить строку на параметр и значение Procedure LoadFromFile(FileName:String) загрузить из файла Procedure SaveToFile(FileName:String) - сохранить в файл Function GetParamIndex(ParamName:String):integer - получить индекс параметра Procedure SetParam(ParamName,NewValue:String) - присвоить параметру новое значение Procedure DeleteParam(ParamName:String) - удалить параметр Описание модуля REPORTS ---------------------------------------------------------------------------- Модуль для генерации текстовых файлов отчетов. Используются файлы шаблонов. PReport=^TReport; TReport=object(TObject) rmask,rout:Pstring; Fin,Fout:Text; ErrorCode:word; Constructor Init(repMask,repOutFile:String); Destructor Done; Procedure BuildReportForm(Rec:Pointer); Function GetData(fldNum,fldLen:word; Rec:Pointer):string; Procedure BuildReportLine(S:String; Rec:Pointer); Procedure BuildReport(DataSource:Pointer); Procedure PrepareReport; Procedure CloseReport; Function DoMacro(S:String):String; Function Error:boolean; end; Поля и методы: rmask,rout - рабочие строки Fin,Fout - рабочие файлы ErrorCode - код ошибки Constructor Init(repMask,repOutFile:String) - конструктор, параметры - файл шаблона и файл отчета. Destructor Done; деструктор Procedure BuildReportForm(Rec:Pointer) построить отчет в виде формы. Function GetData(fldNum,fldLen:word; Rec:Pointer):string; получить данные для поля и засунуть их в длину поля. Procedure BuildReportLine(S:String; Rec:Pointer) - построить строку отчета Procedure BuildReport(DataSource:Pointer) - построить отчет Procedure PrepareReport - подготовить отчет Procedure CloseReport - закрыть отчет Function DoMacro(S:String):String - обработать макроподстановку. Function Error:boolean; - проверка, были ли ошибки