public static Соответствие Constructor(Соответствие source) { if (!(source is Соответствие fix)) { throw RuntimeException.InvalidArgumentType(); } return(new Соответствие(fix)); }
/// <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); }
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(знСтруктура); }
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)); }