unit fs01aef_lib; interface Uses Classes, NetEncoding, SysUtils; //************************************************* //Сохранить FS-скрипт в файл function FS_SaveToFile(fnScr:string; ListScr: TStrings; ItsUTF8:boolean=false ):boolean; //Загрузить FS-скрипт из файла function FS_LoadFromFile(fnScr:string; ListScr: TStrings; ItsUTF8:boolean=false ):boolean; //************************************************* /************************************************* //Кодирование в Base64 function Str_to_StrBase64(S: string): string; //Декодирование из Base64 function StrBase64_to_Str(S: string): string; //*************************************************
//Сохранить TStrings в текстовый файл (в заданной кодировке) function TStrings_SaveToFile( fn:String; List:TStrings; Encoding:TEncoding ):boolean; overload; //Сохранить TStrings в текстовый файл (в заданной кодировке) function TStrings_SaveToFile( fn:String; List:TStrings; sEncoding:string='UTF-8' ):boolean; overload; //Загрузить текстовый файл в TStrings (в заданной кодировке) function TStrings_LoadFromFile( fn:String; List:TStrings; Encoding:TEncoding ):boolean; overload; //Загрузить текстовый файл в TStrings (в заданной кодировке) function TStrings_LoadFromFile( fn:String; List:TStrings; sEncoding:string='UTF-8' ):boolean; overload; //Конвертация идентификатора "кодовой страницы" из строки в TEncoding function EncodingName_to_TEncoding(sName:string) : TEncoding; implementation //************************************************* function FS_SaveToFile(fnScr:string; ListScr: TStrings; ItsUTF8:boolean=false ):boolean; //Сохранить FS-скрипт в файл { fnScr - имя файла ListScr - текст скрипта ItsUTF8 - флаг (если =TRUE, то сохранить в UTF-8) } begin Result:=false; fnScr:=trim(fnScr); if fnScr<>'' then begin if Assigned(ListScr) then begin if ListScr.Count>0 then begin Result:=true; if not ItsUTF8 then begin ListScr.SaveToFile(fnScr); end else begin TStrings_SaveToFile(fnScr, ListScr, 'UTF-8'); end; end; end; end; end; function FS_LoadFromFile(fnScr:string; ListScr: TStrings; ItsUTF8:boolean=false ):boolean; //Загрузить FS-скрипт из файла { fnScr - имя файла ListScr - текст скрипта ItsUTF8 - флаг (если =TRUE, то сохранить в UTF-8) } begin Result:=false; if Assigned(ListScr) then begin ListScr.Clear; fnScr:=trim(fnScr); if FileExists(fnScr) then begin Result:=true; if not ItsUTF8 then begin ListScr.LoadFromFile(fnScr); end else begin TStrings_LoadFromFile(fnScr, ListScr, 'UTF-8'); end; end; end; end; //************************************************* /************************************************* function Str_to_StrBase64(S: string): string; //Кодирование в Base64 begin Result := TNetEncoding.Base64.Encode(S); end; function StrBase64_to_Str(S: string): string; //Декодирование из Base64 begin Result := TNetEncoding.Base64.Decode(S); end; /************************************************* function EncodingName_to_TEncoding(sName:string) : TEncoding; //Конвертация идентификатора "кодовой страницы" из строки в TEncoding begin Result:=TEncoding.GetEncoding(1251); sName:=trim(sName); if length(sName)>0 then begin sName:=UpperCase(sName); if sName='WINDOWS-1251' then begin Result:=TEncoding.GetEncoding(1251); end; if sName='UTF-8' then begin Result:=TEncoding.UTF8; end; if sName='DOS-866' then begin Result:=TEncoding.GetEncoding(866); end; if sName='KOI8R' then begin Result:=TEncoding.GetEncoding(20866); end; if sName='UNICODE' then begin Result:=TEncoding.Unicode; end; if sName='UTF-7' then begin Result:=TEncoding.UTF7; end; end; end; function TStrings_SaveToFile( fn:String; List:TStrings; Encoding:TEncoding ):boolean; //Сохранить TStrings в текстовый файл (в заданной кодировке) begin Result:=false; fn:=trim(fn); if length(fn)>0 then begin if Assigned(List) then begin TRY List.SaveToFile(fn,Encoding); Result:=true; FINALLY END; end; end; end; function TStrings_SaveToFile( fn:String; List:TStrings; sEncoding:string='UTF-8' ):boolean; //Сохранить TStrings в текстовый файл (в заданной кодировке) Var E:TEncoding; begin E:=EncodingName_to_TEncoding(sEncoding); TRY Result:=TStrings_SaveToFile(fn,List,E); FINALLY END; end; function TStrings_LoadFromFile( fn:String; List:TStrings; Encoding:TEncoding ):boolean; //Загрузить текстовый файл в TStrings (в заданной кодировке) begin Result:=false; if Assigned(List) then begin List.Clear; fn:=trim(fn); if FileExists(fn) then begin TRY List.LoadFromFile(fn,Encoding); Result:=true; FINALLY END; end; end; end; function TStrings_LoadFromFile( fn:String; List:TStrings; sEncoding:string='UTF-8' ):boolean; //Загрузить текстовый файл в TStrings (в заданной кодировке) Var E:TEncoding; begin E:=EncodingName_to_TEncoding(sEncoding); TRY Result:=TStrings_LoadFromFile(fn,List,E); FINALLY END; end; end.