Exemple #1
0
        public static Соответствие Constructor(Соответствие source)
        {
            if (!(source is Соответствие fix))
            {
                throw RuntimeException.InvalidArgumentType();
            }

            return(new Соответствие(fix));
        }
Exemple #2
0
        /// <summary>
        /// Возвращает соответствие переменных среды. Ключом является имя переменной, а значением - значение переменной
        /// </summary>
        /// <example>
        /// СИ = Новый СистемнаяИнформация();
        /// Для Каждого Переменная Из СИ.ПеременныеСреды() Цикл
        ///     Сообщить(Переменная.Ключ + " = " + Переменная.Значение);
        /// КонецЦикла;
        /// </example>
        /// <returns>Соответствие</returns>
        public Соответствие ПеременныеСреды()
        {
            //SystemLogger.Write("WARNING! Deprecated method: 'SystemInfo.EnvironmentVariables' is deprecated, use 'EnvironmentVariables' from global context");
            var varsMap = new Соответствие();
            var allVars = System.Environment.GetEnvironmentVariables();

            foreach (DictionaryEntry item in allVars)
            {
                varsMap.Вставить(
                    (string)item.Key,
                    (string)item.Value);
            }

            return(varsMap);
        }
Exemple #3
0
        public object ДвоичныеДанныеВСтруктуру(object Данные, object знСтруктура = null)
        {
            БуферДвоичныхДанных бдДанные;
            long рдДанные;

            if (Данные is ДвоичныеДанные)
            {
                ДвоичныеДанные дд = Данные as ДвоичныеДанные;
                рдДанные = дд.азмер();
                if (рдДанные == 0)
                {
                    return(null);
                }
                бдДанные = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(дд);
            }
            else if (Данные is БуферДвоичныхДанных)
            {
                бдДанные = Данные as БуферДвоичныхДанных;
                рдДанные = бдДанные.азмер;
            }
            else
            {
                return(null);
            }

            var Позиция = 0;

            if (знСтруктура is null)
            {
                знСтруктура = Структура.Новый();
            }

            while (Позиция < рдДанные - 1)
            {
                var рдКлюч     = бдДанные.ПрочитатьЦелое16(Позиция);
                var рдЗначение = бдДанные.ПрочитатьЦелое32(Позиция + 2);

                if (рдКлюч + рдЗначение > рдДанные)  // Это не структура
                {
                    return(null);
                }

                var Ключ      = ПолучитьСтрокуИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(бдДанные.Прочитать(Позиция + 6, рдКлюч)));
                var бЗначение = бдДанные.Прочитать(Позиция + 6 + рдКлюч, рдЗначение);
                Позиция = Позиция + 6 + рдКлюч + рдЗначение;

                object Значение;

                var Л = Лев(Ключ, 1);
                if (Л == "*")
                {
                    Ключ     = Сред(Ключ, 2);
                    Значение = ДвоичныеДанныеВСтруктуру(бЗначение, Структура.Новый());
                }
                else if (Л == "&")
                {
                    Ключ     = Сред(Ключ, 2);
                    Значение = ДвоичныеДанныеВСтруктуру(бЗначение, Соответствие.Новый());
                }
                else if (Л == "$")
                {
                    Ключ     = Сред(Ключ, 2);
                    Значение = ДвоичныеДанныеВСтруктуру(бЗначение, Массив.Новый());
                }
                else if (Л == "#")
                {
                    Ключ     = Сред(Ключ, 2);
                    Значение = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(бЗначение);
                }
                else if (Л == "^")
                {
                    Ключ     = Сред(Ключ, 2);
                    Значение = null;
                }
                else
                {
                    Значение = ПолучитьСтрокуИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(бЗначение));
                    if (Л == "!")
                    {
                        Ключ     = Сред(Ключ, 2);
                        Значение = Число(Значение);
                    }
                }
                if (Ключ == "")
                {
                    (знСтруктура as Массив).Добавить(Значение);
                }
                else
                {
                    (знСтруктура as Структура).Вставить(Ключ, Значение);
                }
            }
            return(знСтруктура);
        }
Exemple #4
0
        public static Процесс Новый(string cmdLine, string currentDir = null, bool redirectOutput = false, bool redirectInput = false, string encoding = null, Соответствие env = null)
        {
            var sInfo = PrepareProcessStartupInfo(cmdLine, currentDir);

            sInfo.UseShellExecute = false;
            if (redirectInput)
            {
                sInfo.RedirectStandardInput = true;
            }

            if (redirectOutput)
            {
                sInfo.RedirectStandardOutput = true;
                sInfo.RedirectStandardError  = true;
            }

            if (encoding != null)
            {
                var enc = КодировкаТекста.GetEncoding(encoding);

                sInfo.StandardOutputEncoding = enc;
                sInfo.StandardErrorEncoding  = enc;
            }

            //if (env != null)
            //{
            //    var source = env.Select(x => new
            //    {
            //        Key = x.Key.AsString(),
            //        Value = x.Value.AsString()
            //    }).Where(x => !string.IsNullOrWhiteSpace(x.Key));

            //    foreach (var kv in source)
            //    {
            //        sInfo.EnvironmentVariables[kv.Key] = kv.Value;
            //    }
            //}

            var p = new System.Diagnostics.Process();

            p.StartInfo = sInfo;

            return(new Процесс(p, encoding));
        }