function fsiBase_Main_Script_Mnemo_Prepare(Q:TFDQuery; scrText:TStrings; List_EnvVars:TStrings ):boolean; //Выгрузка библиотечных скриптов из БД. Парсинг скрипта Var ListScr:TStrings; sDir, sMnemo:string; Sx:string; InUses:boolean; N,i:integer; begin Result:=false; if Assigned(Q) then begin if Assigned(List_EnvVars) then begin if List_EnvVars.Count>0 then begin //Получить имя папки для сохранения библиотечных файлов из БД sDir:=DirName_from_List_EnvVars(List_EnvVars); if DirectoryExists(sDir) then begin //удалить все PAS-файлы из папки (если требуется) //Files_Delete(sDir+'*.pas'); if Assigned(scrText) then begin if scrText.Count>0 then begin Result:=true; end; end; end; end; end; end; if Result then begin //--------------------------------------------------- //Поиск раздела USES и его парсинг ListScr:=TStringList.Create; TRY InUses:=false; i:=-1; while i<(scrText.Count-1) do begin i:=i+1; Sx:=trim(scrText[i]); sMnemo:=''; if InUses then begin if Sx<>'' then begin //................................ //Выделить мнемокод из строки FS-скрипта //если он там присутствует sMnemo:=Mnemo_Extract(Sx); //................................ if sMnemo<>'' then begin //................................ //Загрузить скрипт из БД ListScr.Text:=FS_LoadFromDB(Q, sMnemo, true); //................................ if ListScr.Count>0 then begin //Сохранить срипт в папку ListScr.SaveToFile(sDir+sMnemo+'.pas'); end; ListScr.Text:=''; //................................ //Заменить строку в скрипте Sx:=Replace_In_String(scrText[i], '${'+sMnemo+'}', sMnemo+'.pas', true); scrText[i]:=Sx; //................................ end; end; end; //................................ //................................ //Определение начала раздела Uses FS-Скрипта if AnsiUpperCase(Sx) = 'USES' then InUses:=true; //................................ if InUses then begin //................................ //Оценка: это конец раздела USES? if Sx<>'' then begin if Sx[length(Sx)]=';' then begin InUses:=false; i:=(scrText.Count+1); //Выход из парсинга end; end; //................................ end; end; FINALLY FreeAndNil(ListScr); END; //--------------------------------------------------- end; end;