unit fs02iopSrv_03_SrvMethods; interface uses fs02iop_00_lib, fs02iopSrv_00_FS_lib, //Dialogs, System.SysUtils, System.Classes, System.Json, DataSnap.DSProviderDataModuleAdapter, Datasnap.DSServer, Datasnap.DSAuth; type TServerMethods1 = class(TDSServerModule) private { Private declarations } public { Public declarations } //----------------------------------- //Методы, созданные по умолчанию //(можно использовать для тестирования) function EchoString(Value: string): string; function ReverseString(Value: string): string; //----------------------------------- //----------------------------------- //"Наши" методы... :-) //Список FS-скриптов function FS_Scripts_List:string; //FS-скрипт: комментарий к скрипту function FS_Script_Comment(sMnemo:string):string; //FS-скрипт: описание к скрипта function FS_Script_Info(sMnemo:string):string; //FS-скрипт: список входных параметров FSI function FS_Script_ParamsIn(sMnemo:string):string; //FS-скрипт: список вЫходных параметров FSI function FS_Script_ParamsOut(sMnemo:string):string; //FS-скрипт: Выполнить function FS_Script_Execute(sMnemo:string; sParamsIn:string; sParamsOut:string):string; //----------------------------------- end; implementation {$R *.dfm} uses fs02iopSrv_01_main, System.StrUtils; //******************************************** //Методы, созданные по умолчанию (можно использовать для тестирования) function TServerMethods1.EchoString(Value: string): string; begin Result := Value; end; function TServerMethods1.ReverseString(Value: string): string; begin Result := System.StrUtils.ReverseString(Value); end; //******************************************** //******************************************** //"Наши" методы... :-) function TServerMethods1.FS_Scripts_List:string; //Список FS-скриптов Var List:TStrings; begin Result:=''; List:=TStringList.Create; TRY fsScr_List_Get(fMain.qTMPrt, List); Result:=List.Text; FINALLY FreeAndNil(List); END; end; function TServerMethods1.FS_Script_Comment(sMnemo:string):string; //FS-скрипт: комментарий к скрипту begin Result:=''; end; function TServerMethods1.FS_Script_Info(sMnemo:string):string; //FS-скрипт: описание к скрипта begin Result:='Ошибка!'; sMnemo:=MnemoCode_Normalize(sMnemo); if sMnemo<>'' then begin sMnemo:=PrepareForSQL(AnsiLowerCase(sMnemo)); Result:=DB_Table_Field_AsString( fMain.qTMPrt, 'fs_scripts', 'info', 'mnemocode_lower='+#39+sMnemo+#39 ); end; end; function TServerMethods1.FS_Script_ParamsIn(sMnemo:string):string; //FS-скрипт: список входных параметров FSI (константы FS) Var List:TStrings; i:integer; sName:string; begin Result:='Ошибка!'; sMnemo:=MnemoCode_Normalize(sMnemo); if sMnemo<>'' then begin sMnemo:=PrepareForSQL(AnsiLowerCase(sMnemo)); List:=TStringList.Create; TRY List.Text:=DB_Table_Field_AsString( fMain.qTMPrt, 'fs_scripts', 'params_in', 'mnemocode_lower='+#39+sMnemo+#39 ); for i:=0 to (List.Count-1) do begin sName:=trim(List.Names[i]); if sName<>'' then begin List.Values[sName]:=' '; end else begin List[i]:=''; end; end; TStrings_DeleteEmptyLine(List); Result:=List.Text; FINALLY FreeAndNil(List); END; end; end; function TServerMethods1.FS_Script_ParamsOut(sMnemo:string):string; //FS-скрипт: список вЫходных параметров FSI (переменные FS) Var List:TStrings; i:integer; sName:string; begin Result:='Ошибка!'; sMnemo:=MnemoCode_Normalize(sMnemo); if sMnemo<>'' then begin sMnemo:=PrepareForSQL(AnsiLowerCase(sMnemo)); List:=TStringList.Create; TRY List.Text:=DB_Table_Field_AsString( fMain.qTMPrt, 'fs_scripts', 'params_out', 'mnemocode_lower='+#39+sMnemo+#39 ); for i:=0 to (List.Count-1) do begin sName:=trim(List.Names[i]); if sName<>'' then begin List.Values[sName]:=' '; end else begin List[i]:=''; end; end; TStrings_DeleteEmptyLine(List); Result:=List.Text; FINALLY FreeAndNil(List); END; end; end; function TServerMethods1.FS_Script_Execute(sMnemo:string; sParamsIn:string; sParamsOut:string):string; //FS-скрипт: Выполнить begin Result:='Ошибка!'; sMnemo:=MnemoCode_Normalize(sMnemo); if sMnemo<>'' then begin Result:=fMain.fsiScript_Execute_RT(sMnemo, sParamsIn, sParamsOut ); end; end; //******************************************** end.