• Как обращаться к конкретному элементу списка по двум ключам без перебора списка?

    arxont
    @arxont
    C# программист
    LINQ

    class Program
    {
    	static void Main()
    	{
    		var lpixels = new LPixels();
    
    		lpixels.ListPixels.Add(new Pixels(1, 1, "test11"));
    		lpixels.ListPixels.Add(new Pixels(1, 2, "test12"));
    		lpixels.ListPixels.Add(new Pixels(2, 1, "test21"));
    
    		var find = lpixels.ListPixels.First(x => x.x == 1 && x.y == 2);
    
    		Console.WriteLine(find.text);
    	}
    }
    
    public class LPixels
    {
    	public List<Pixels> ListPixels = new List<Pixels>();
    }
    
    public class Pixels
    {
    	public Pixels (int x, int y, string text)
    	{
    		this.x = x;
    		this.y = y;
    		this.text = text;
    	}
    
    	public int x;
    	public int y;
    	public string text;
    }
    Ответ написан
  • Как отследить события работы с накопителем?

    arxont
    @arxont
    C# программист
    https://msdn.microsoft.com/ru-ru/library/system.io...

    Для работы с конкретно с внешним, найденные вами примеры потребуются чтобы при подключении подписаться на события через FileSystemWatcher, на извлечение чтобы отписаться.
    Ответ написан
    Комментировать
  • Как записать пути всех файлов и папок в txt файл, и загрузить в TreeView?

    arxont
    @arxont
    C# программист
    Записать список файлов и папок в файл
    private void FoldersToFile()
    {
        var folder = @"C:\Temp";
        var fileResult = @"X:\Temp\result.txt";
    
        TextWriter tw = new StreamWriter(fileResult, false, Encoding.Default);
    
        tw.WriteLine(folder);
    
        Directory.GetDirectories(folder, "*", SearchOption.AllDirectories)
                         .ToList().ForEach(dir =>
        {
            tw.WriteLine(dir);
            Directory.GetFiles(dir).ToList().ForEach(file => tw.WriteLine(file));
        });
    
        tw.Close();
    }


    Забить в treeView
    private void ReadFile()
    {
        var fileResult = @"X:\Temp\result.txt";
        var content = File.ReadAllLines(fileResult).ToList();
        
        foreach (var element in content)
        {
            if (treeView1.Nodes.Count >0)
            {
                var x = SearchNode(Directory.GetParent(element).ToString(), treeView1.Nodes[0]);
                x?.Nodes.Add(element);
            }
            else treeView1.Nodes.Add(element);
        }
        treeView1.ExpandAll();
    }


    5a8133a095293277111782.png
    Ответ написан
    3 комментария
  • Как вырвать из JSON параметр в .Net?

    arxont
    @arxont
    C# программист
    Как в комментариях уже сказали - используйте библиотеку Newtonsoft.Json.
    Дальше есть два способа
    (для примера тестовая строка выглядит так -
    string testJson = "{'name':'Test','response':1}";
    1. Через класс. Создаём класс, со списком параметров и делаем
    static void Main(string[] args)
            {
                string testJson = "{ \"channels\" : [ { \"guid\" : \"sHyGfRs\", \"name\" : \"Name 1\", \"rights\" : \"783\", \"codec\" : \"h264\", \"have_ptz\" : \"0\", } ] }";
    
                var result = JsonConvert.DeserializeObject<RootObject>(testJson);
    
                Console.WriteLine($"Name: {result.channels.FirstOrDefault().guid}");
            }
    
            public class Channel
            {
                public string guid { get; set; }
                public string name { get; set; }
                public string rights { get; set; }
                public string codec { get; set; }
                public string have_ptz { get; set; }
            }
    
            public class RootObject
            {
                public List<Channel> channels { get; set; }
            }


    2. Есть ещё способ с использованием dynamic (но у вас там массивы, так что категорически не рекомендую)
    static void Main(string[] args)
            {
                string testJson = "{'name':'Test','response':1}";
    
                dynamic resultDynamic = JObject.Parse(testJson);
    
                Console.WriteLine($"Name: {resultDynamic.name}, Response: {resultDynamic.response}");
            }
    Ответ написан
    Комментировать
  • Какую небольшую БД стоит использовать в программе, чтобы познать азы?

    arxont
    @arxont
    C# программист
    SQLite или MS SQL Server Compact Edition.

    PS: Как вариант, можете вообще без баз данных обойтись. Работать напрямую с DataSet и использовать WriteXML&ReadXML
    Ответ написан
    Комментировать
  • Почему Windows загружается с Windows Boot Manager, а не с SSD?

    arxont
    @arxont
    C# программист
    Процитирую другой ответ - Что такое Windows Boot manager?
    Потому что, каждая операционная система загружается через загрузчик — специальный код, который инициализирует оборудование, и после чего передаёт управление на ядро.
    У линуксов это чаще всего Grub или в более современных дистрибутивах — systemd-boot. В современных Windows он называется Windows Boot Manager.


    когда вы "просто выбираете диск", boot manager не используется?

    Он точно так же загружается, просто он жёстко прописан в первый физический сектор вашего накопителя. Поэтому, в legacy-режиме выбирать просто нечего, т. к. на один диск может быть только один boot manager. Соответственно, выбор тут не имеет смысла.

    А в режиме загрузки EFI, boot manager находится на определённым образом сконфигурированном диске, в виде простых исполняемых файлов в формате PE32/COFF. Этих файлов могут быть сотни. Соответственно, чтобы знать, какой из них грузить, его путь и параметры прописываются в nvram биоса. Вот этот Windows Boot Manager и есть тот самый файл, прописанный в энергонезависимую память. Вы можете его переименовать и написать, что душе угодно.
    Ответ написан
    Комментировать
  • Почему в большинстве университетов C# стал заменять Java?

    arxont
    @arxont
    C# программист
    Чем лобби Microsoft хуже, чем лобби Oracle? А по факту сейчас C# более развитый язык с гораздо большим количеством синтаксического сахара и проще "во вхождении".
    Ответ написан
    23 комментария
  • Трудно ли сделать успешную игру для стима, сколько это будет стоить?

    arxont
    @arxont
    C# программист
    Я бы на вашем месте начал с того, что сделал бы просто змейку. Можно даже из текстовых символов. Потом, в зависимости от того куда вы хотите развиваться (управление, программирование и тп), начал пробовать заказывать небольшие работы у фрилансеров и пробовать компоновать. В небольшую игру типа тривряд. Несколько небольших игр для мобильных будет неплохим стартом. Тут вы поймёте проблемы и с художникам, и с гейм-дизайнерами, и с продвижением, и с монетизацией, и с технической поддержкой пользователей, и ещё с целой кучей. И так - от малых проектов к большим. А начинать сразу с большого у вас просто не получится, тем более без опыта.

    По поводу времени - Студия GSC, которая делала сталкера, изначально занималась локализацией западных проектов и на этом зарабатывала. Потом появились казаки (через 6 лет после создания фирмы!). И только ещё через 6 лет вышел сталкер (то есть от создания фирмы, до выпуска игры прошло 12 лет)

    По поводу команды - собрать можно и в снг, но реально профессиональные люди требуют хорошую зарплату.
    Ответ написан
    Комментировать
  • Как обрезать число двойной точности?

    arxont
    @arxont
    C# программист
    https://msdn.microsoft.com/ru-ru/library/75ks3aby(...

    double x1 = 0.0010000456;
    double x2 = 0.001;
    
    Console.WriteLine(x1 == x2);
    
    //Способ 1. Округляем числа до 4 знаков и сравниваем
    Console.WriteLine(Math.Round(x1, 4) == Math.Round(x2, 4));
    
    //Способ 2. Через разность
    Console.WriteLine(Math.Abs(x1 - x2) < 0.0001);
    
    //Способ 3. Через string и convert. !!! ШУТКА !!! В РЕАЛЬНОМ КОДЕ НЕ ИСПОЛЬЗОВАТЬ
    string strx1 = x1.ToString().Substring(0, 5);
    string strx2 = x2.ToString().Substring(0, 5);
    Console.WriteLine(strx1 == strx2);
    Ответ написан
    Комментировать
  • Как имитировать нажатие мыши C#?

    arxont
    @arxont
    C# программист
    Вопрос - а зачем делать клик? Если вам нужно делать это даже при свёрнутом приложении, значит это не взаимодействие пользователя, а раз это программно вызывается, так и вызывайте напрямую событие которое вызывает ваш клик.

    PS: Если всё таки надо эммулировать, то я бы смотрел в сторону https://www.codeproject.com/Questions/379518/Can-I...
    Ответ написан
    1 комментарий
  • Можно ли заменить процессор на ноутбуке?

    arxont
    @arxont
    C# программист
    На то, что -
    а) Процессор распаян на материнской плате, так что для замены нужно очень хорошо владеть методикой BGA-пайки
    б) На то, что всё таки сокеты разные - "AMD A6-3400M APU Socket: FS1" и "AMD A10-4600M APU Socket: FS1r2". Также разные платформы и микроархитектура, что тоже может сыграть свою роль.
    в) В биосе для вашего ноутбука может просто не быть поддержки нового процессора
    Ответ написан
    Комментировать
  • Возможно ли использовать MOLEX разъем для питания Sata через переходник?

    arxont
    @arxont
    C# программист
    Да
    Ответ написан
    Комментировать
  • Как правильно собрать проект на C#?

    arxont
    @arxont
    C# программист
    Надо сделать две вещи -
    1) Добавить в app.config параметр probing - https://docs.microsoft.com/en-us/dotnet/framework/...
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
        </startup>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <probing privatePath="Libs" />
        </assemblyBinding>
      </runtime>
    </configuration>


    2) Вторым шагом мы должны переместить dll в эту папку - для этого в свойствах проекта, переходим на вкладку "Build events" и в разделе Post-build добавляем следующее -
    mkdir $(TargetDir)Libs
    move $(TargetDir)*.dll $(TargetDir)\Libs\

    5a5961969771c693186767.png
    Ответ написан
    3 комментария
  • Как назначить имя окну консоли в проекте?

    arxont
    @arxont
    C# программист
    Не через код.

    Никак. Надо понимать, что если в случае GUI-приложения (WPF, WinForms) мы сами генерируем окно, то в случае консольного окно генерируется процессом conhost. А управлять внешними окнами мы можем только кодом.

    PS: чем вам не нравится использование Console.Title (или SetConsoleTitle)? Всё равно, так или иначе, всё приходит к коду - просто некоторые вещи за вас генерирует IDE, некоторые вы вбиваете сами.
    Ответ написан
  • Бюджетная клавиатура с множеством программируемых клавиш?

    arxont
    @arxont
    C# программист
    Когда мне такое понадобилось, я купил бу клаву для POS-устройств. Получилось тысяча рублей за полностью программируемую клавиатуру. Бонусом возможность легко менять надписи (прозрачный колпачок на клавише). Также бонусом, то что почти все они влагопылезащищённые.

    У меня была Shtrih S78D-SP - https://www.avito.ru/moskva/tovary_dlya_kompyutera... (мопед не мой, я просто нашел в гугле объяву)

    Вот ещё статья с гигтаймс https://geektimes.ru/post/273182/ про такие клавы.

    PS: Если не гнаться за тем, чтобы новая была, то бу можно спокойно найти рублей за 500. Особенно сейчас - после массовой смены кассовой техники в связи с переходом на ОФД.

    PS2: Если будете брать категорически рекомендую брать USB.
    Ответ написан
    Комментировать
  • Задачи или что-нибудь еще по сетевому программированию на .net?

    arxont
    @arxont
    C# программист
    https://eax.me/programming-language-learning/
    Советы и примеры задач, которые помогут вам в освоении нового языка программирования

    Сети и протоколы
    Ответ написан
    Комментировать
  • Как парсить JSON строку в C#?

    arxont
    @arxont
    C# программист
    В плане парсинга JSON в C# существует два разных подхода - через класс или через dynamic. Класс правильнее использовать если вам в дальнейшем что-то надо будет делать или как-то обрабатывать-пересылать. Если требуется получить только одно единственное значение, то можете обойтись dynamic. Но конкретно в вашем случае класс не поможет, так как достаточно странный JSON и я бы сказал, что не совсем валидный. Но выдернуть значение можно - (используем, как уже подсказали выше, Newtonsoft.NET)
    var updates = (JContainer)JObject.Parse(json)["updates"];
    
    dynamic results = updates.Descendants()
         .OfType<JObject>()
         .Where(x => x["source_text"] != null).FirstOrDefault();
    
    Console.WriteLine(results.source_text);

    PS: Сгененировать класс по JSON`у можно к примеру на json2csharp.com но по вашему примеру как раз и видно, что не особо класс тут поможет.
    Ответ написан
    5 комментариев
  • C# Xml Как выполнить выборку?

    arxont
    @arxont
    C# программист
    XDocument xdoc = XDocument.Load("test.xml");
    
    var query = xdoc.Descendants("gruppa");
    
    foreach (var x in query)
    {
       Console.WriteLine(x.Value);             
    }
    Ответ написан
    6 комментариев
  • Как включить Timer на другой форме?

    arxont
    @arxont
    C# программист
    Я бы сделал следующее - на второй форме, на кнопку, после нажатие на которую надо закрыть, свойство DialogResult в OK.

    Затем на главной форме сделал бы так -
    private void Form1_Load(object sender, EventArgs e)
    {
        timer1.Enabled = true;
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        timer1.Enabled = false;
    
        var form2 = new Form2();
        if (form2.ShowDialog() == DialogResult.OK)
        {
            timer1.Enabled = true;
        }
    }
    Ответ написан