//Переменные окружения. Парсинг скрипта
function fsiBase_Main_Script_EnvVars_Prepare(
                                             scrText:TStrings;
                                             List_EnvVars:TStrings
                                            ):boolean; overload;
//Переменные окружения. Парсинг скрипта
function fsiBase_Main_Script_EnvVars_Prepare(
                                             sScript:string;
                                             List_EnvVars:TStrings
                                            ):string; overload;

implementation


function fsiBase_Main_Script_EnvVars_Prepare(
                                             scrText:TStrings;
                                             List_EnvVars:TStrings
                                            ):boolean;
//Переменные окружения. Парсинг скрипта
//  scrText - текст скрипта (TStrings)
//  List_EnvVars - список значений преременных окружения
begin
  Result:=false;
  if Assigned(scrText) then begin
     if scrText.Count>0 then begin
        Result:=true;
        if Assigned(List_EnvVars) then begin
           if List_EnvVars.Count>0 then begin
              scrText.Text := fsiBase_Main_Script_EnvVars_Prepare(
                                                                  scrText.Text,
                                                                  List_EnvVars
                                                                 );
           end;
        end;
     end;
  end;
end;

function fsiBase_Main_Script_EnvVars_Prepare(
                                             sScript:string;
                                             List_EnvVars:TStrings
                                            ):string;
//Переменные окружения. Парсинг скрипта
//  sScript - текст скрипта
//  List_EnvVars - список значений преременных окружения
Var
  vn,vv:string;
  i:integer;
begin
  Result:='';
  if Assigned(List_EnvVars) then begin
     if List_EnvVars.Count>0 then begin
        Result:=sScript;
        i:=-1;
        while i<(List_EnvVars.Count-1) do
         begin
           i:=i+1;
           vn:=trim(List_EnvVars.Names[i]);
           if length(vn)>0 then begin
              vv:=trim(List_EnvVars.Values[vn]);
              if length(vv)>0 then begin
                 Result:=Replace_In_String(Result, '$('+vn+')', vv, true);
              end;
           end;
        end;
     end;
  end;
end;