Ответы пользователя по тегу C#
  • Как реализовать асинхронный сервер TCP C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    dotnet core rsignal смотрели? если нет, рекомендую
    Ответ написан
    1 комментарий
  • Как преобразовать массив байт в любой тип?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    попытайтесь понять тут https://docs.microsoft.com/ru-ru/dotnet/api/system...

    сериализатор сохраняет , по всей видимости, еще хоть что то о мета данных. а ДЕсериализатор, пытается их найти... с одним байтом этот фокус не проходит

    ps для понимания, опробуйте https://docs.microsoft.com/ru-ru/dotnet/api/system... это должно сработать. и только после этого, вернитесь к вопросам:
    - любой объект
    - сериализация
    - ДЕсериализация

    pps
    абсолютно рабочий код (!!! ну на самом деле тоже исправлено!) ;))
    using System;
    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;
    
    namespace stream_to_any
    {
        class Program
        {
            static void Main(string[] args)
            {
                var data = new byte[] { 1, 2 };
                using (var stream = new MemoryStream())
                {
                    var formatter = new BinaryFormatter();
                    formatter.Serialize(stream, data);
                    stream.Seek(0, SeekOrigin.Begin);
                    var endDataPacket = (byte[])formatter.Deserialize(stream);
                    Console.WriteLine(endDataPacket.GetType().ToString());
                    foreach(var d in endDataPacket)
                        Console.WriteLine(d);
                }
            }
        }
    }
    ppps если вы доберетесь от мемори-стримов, до реальных файлов, думаю у вас будет возможность заметить что же там "не так" )))
    Ответ написан
    2 комментария
  • Как получить имена всех файлов в папке?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - var fnOnly = Path.GetFileName(fullPath)
    2 -
    var files = Directory.GetFiles(@"c:\").Select(fn => Path.GetFileName(fn));
    это будет IEnumerable
    3 - если кроме как с массивами работать ни с чем не умеем, ну примерно так
    var files = Directory.GetFiles(@"c:\").Select(fn => Path.GetFileName(fn)).ToArray();
    Ответ написан
    3 комментария
  • Как выдрать из строки нужные символы зная позиции?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    ...
      var fn = "N54E026.hgt";
      var c1 = fn[0];
      Console.WriteLine($"первый символ {c1}");
    ...
      var d2 = fn.Substring(1, 2);
      Console.WriteLine($"фрагмент из 2х символов, начиная со второй позиции {d2}");
      if(int.TryParse(d2, out var n2))
        Console.WriteLine($"численное значение d2 {n2}");
    ...
    Ответ написан
    Комментировать
  • Зачем передавать User Agent в загловок запроса при работе с VK API?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    Как это повлияет на баны?
    единственный аспект, о котором стоит беспокоится. однако логика оценки заголовков и поведения при запросах (в смысле та самая, которая может повлечь бан) это все секрет сайта
    Ответ написан
    4 комментария
  • Почему неправильно происходит сравнение?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    jfeJPeQ.png
    ...
    new string(buf.Where(c => Char.IsLetterOrDigit(c) || Char.IsWhiteSpace(c)).ToArray())


    код для размышления
    using System;
    using System.Linq;
    
    namespace Rextester
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                Console.WriteLine("1 - Запись строки \n2 - Удаление строки");
                Console.Write("\nВыберите пункт: ");
                var buf = Console.ReadLine();
                var zzz = new string(buf.Where(c => Char.IsLetterOrDigit(c) || Char.IsWhiteSpace(c)).ToArray());
                Console.Write($"\n...! вот такую шнягу я сочинил {zzz}\n");
                Console.Write($"\n...! потом придумал такое условие {buf != zzz}\n");
                Console.Write($"\n...! общее условие {buf != zzz} || {buf != "1"} || {buf != "3"}\n");
                if (
                    buf != zzz
                    || buf != "1"
                    || buf != "3")
                {
                    Console.WriteLine("\nНе число или дробное число");
                }
                else
                {
                    switch (buf)
                    {
                        case "1":
                            Console.WriteLine("ОК");
                            break;
                        case "2":
                            Console.WriteLine("ОК");
                            break;
                    }
                }
            }
        }
    }
    ps подправлено.. и думаю так будет нагляднее
    pps а еще есть другие способы проверять ввод, к примеру https://docs.microsoft.com/ru-ru/dotnet/api/system...

    upd код для размышления 2
    using System;
    using System.Linq;
    
    namespace Rextester
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                Console.WriteLine("1 - Запись строки \n2 - Удаление строки");
                Console.Write("\nВыберите пункт: ");
                var buf = Console.ReadLine();
                if (!int.TryParse(buf, out var n))
                    Console.WriteLine("\nНе число или дробное число");
                else
                    switch (n)
                    {
                        case 1:
                            Console.WriteLine("ОК");
                            break;
                        case 2:
                            Console.WriteLine("ОК");
                            break;
                        default:
                            Console.WriteLine($"... опять что то не предвиденное! ((..."
                                + $" или просто число неожиданное? {n}");
                            break;
                    }
            }
        }
    }
    Ответ написан
    3 комментария
  • Система мониторинга на asp net core?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    Система контроля на asp net core?
    да пилите ради бога.. там реально многое заточено под энтерпрайз (сам 3 недели грызу сию науку)

    но вам придется осознать - либо все лобзиком самостоятельно, либо как уже сказано выше DevMan,
    Ответ написан
    Комментировать
  • C# Как изменить формат даты в текстовой строке?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - если у вас в браузере дата отображается так как вам надо* - ищите другой способ получить данные
    2 - если это невозможно, вам придется самостоятельно парсить каждую строку, выделять даты, конвертировать их, и лишь потом отображать. такова программистская жизнь

    ps
    после этого все склеивать обратно в одну строку
    не обязательно, достаточно сделать замену даты в "плохом формате", на "хороший"

    pps * полагаю что вы используете Selenium? если да и
    в браузере дата отображается так как вам надо
    - 99% что есть способ получить нужную вам строку сразу. если нет, в целом, подобная задача не очень сложна, и вполне полезна для развития навыков
    Ответ написан
    2 комментария
  • Что делает конструктор?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    да. легко проверить под отладчиком (отладчик, он же дебагер - вообще классный инструмент)
    Ответ написан
    Комментировать
  • Как получить полную страницу для парсинга?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    осознать, что современные фреймворки фронтенда, предполагают выполнение массы кода js на стороне браузера. который, в свою очередь, может существенно менять дизайн, и докачивать значительную часть контента. в том числе стилей

    надежнее автоматизировать браузеры. если вы опираетесь на C#, возможно, вам может быть полезен проект CEF# (на сколько помню, есть режим и оф-скрин рендеринга (экономия ресурсов) но целесообразно только когда уже "рука набита")
    Ответ написан
    7 комментариев
  • Как к текстовочисленному ID прибавить 1 в С#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    Дело в том, что у меня может быть ID и вида cli435ent8565767 , а прибавить единицу нужно именно в конце, что бы на выходе получилось cli435ent8565768


    - ну сделайте отсчет с конца цифр (https://docs.microsoft.com/ru-ru/dotnet/api/system...
    - разрубаете строку на этом месте, любым понятным для вас способом
    - "хвост" конвертируете в число
    - инкриминируете
    - конвертируете в строку
    - склеиваете с "головой"

    .. творить можно все что угодно. но если вы будете продолжать неожиданные усложнения, это будет откровенным нарушением правил

    ps даже не особо сложно из cli435ent8565767 получить cli{а тут знаки свыше 7}ent{7 знаков} и 4358565767... сделать инкремент и собрать обратно, соблюдая ваши странные правила. вопрос только в том, что бы правила были однозначно определены. и повторюсь - необходимые основы, вам уже сообщили

    pps если вы ждете чудесных манипуляций именно со строками/символами - их нет. можно определить код символа и инкрементировать его.. это работает для [0..8].. а для девятки будет "упс"..
    .. далее, допустим у вас концовка нумерации 199 - инкремент то нужен 200.. а если 1999, тогда 2000.. ход мыслей уловили?

    инкрементировать желательно именно числовое значение. если исходная строка сложная, это ваша отдельная задача - изучить структуру строки, и какие части должны быть "чувствительны" к инкременту "хвоста".. а разбор строки на части и обратная склейка - дело техники.. при чем простой. и (upd новичку*) вполне корректно задавать вопросы по шагам подобной техники, но не превращать вопрос в задание - "сделайте мне хорошо"

    ppps еще точнее, вопросы может задавать кто угодно, и какие угодно. но надо различать грань "помогите мне"/"сделайте за меня". успехов
    Ответ написан
    4 комментария
  • Как работает System.Data.Common на c#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - строку подключения определяет используемый драйвер (и как правило он следует правилам самой СУБД) то есть сама строка вряд ли поменяется, как бы вы не подключались
    2 - System.Data.Common вряд ли вам нужна. в AspNetCore.Docs, всего 2 употребления на 2711 файлов *.cs. да и то, одно из них еще и в условной компиляции.. (типа легаси это..
    3 - MySQL.Data.Mysqlclient судя по поисковикам, тоже не фаворит (в основном вопросы типа WTF?!)

    я бы посоветовал присмотреться к EntityFramework или EntityFramework Core, ссылки для затравки
    https://docs.microsoft.com/ru-ru/ef/ef6/fundamenta...
    https://docs.microsoft.com/ru-ru/ef/core/providers/
    https://docs.microsoft.com/ru-ru/ef/efcore-and-ef6/
    https://ru.wikipedia.org/wiki/ADO.NET_Entity_Framework
    отдельно https://ru.wikipedia.org/wiki/ADO.NET_Entity_Frame...
    Начиная с 5.0 предпочтительным подходом становится Code First. Его суть - сначала пишется код модели на C#, а затем по нему генерируется база данных.
    одно удовольствие в работе
    https://docs.microsoft.com/ru-ru/ef/core/modeling/...
    https://docs.microsoft.com/ru-ru/ef/core/managing-...

    .. и тд
    Ответ написан
    Комментировать
  • Загрузка файла в .Net Core 2 WebApi (из Postman), у кого есть успешный опыт?

    mindtester
    @mindtester Автор вопроса, куратор тега C#
    http://iczin.su/hexagram_48
    вопрос закрыт. Request.Form.Files найдено тут https://qa-help.ru/questions/aspnet-core-rc2-zagru...

    ps
    код на данный момент (все работат)
    [HttpPost]
            public async Task<IActionResult> PostAttachmentItem()
            {
                var files = Request.Form.Files;
                long size = files.Sum(f => f.Length);
                foreach (var file in files)
                    if (file.Length > 0)
                        using (var stream = new MemoryStream())
                        {
                            await file.CopyToAsync(stream);
                            db.AttachmentItems.Add(new AttachmentItem
                            {
                                FileName = file.FileName,
                                Body = stream.ToArray()
                            });
                        }
                await db.SaveChangesAsync();
                return Ok(new { count = files.Count, size });
            }
    Ответ написан
    Комментировать
  • Есть ли готовые библиотеки для автообновления?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    Ответ написан
    Комментировать
  • Как вывести объект в консоль C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1- json это строка, можете просто печатать
    2 - если вы хотите проверить свой класс - можете выводить поля с пояснениями (сделать функцию). можете переопределить для своего класса .ToString()

    ps используйте панель инструментов для вставки тегов, что то они у вас поломались по ходу. выравнивания вам удалось добиться, а подсветки - нет. читать все равно тяжело
    Ответ написан
    1 комментарий
  • Как рисовать, создавать анимации и визуализировать данные в wpf/uwp?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    Ответ написан
    Комментировать
  • Как программно ассоциировать расширение с приложением на C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - решение все таки гуглится (надо обобщить, убрать C#, для начала)
    2 - www.cyberforum.ru/visual-basic/thread1088605.html разберите предложенный алгоритм, и, думаю, все получится
    Ответ написан
    3 комментария
  • Directory.GetFiles(path); почему не видит exe?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    код и контент папки в студию!

    лично у меня все показывает
    using System;
    using System.IO;
    
    namespace DirExe
    {
        class Program
        {
            static void Main(string[] args)
            {
                foreach (var f in Directory.GetFiles(@"c:\users\user\desktop"))
                {
                    Console.WriteLine(f);
                };
                foreach (var f in Directory.GetFiles(@"c:\windows"))
                {
                    Console.WriteLine(f);
                };
            }
        }
    }

    выхлоп
    c:\users\user\desktop\Aida64.lnk
    c:\users\user\desktop\Autoruns64.lnk
    c:\users\user\desktop\desktop.ini
    c:\users\user\desktop\DiskInfo64.lnk
    c:\users\user\desktop\DiskMark64.lnk
    c:\users\user\desktop\Far32.lnk
    c:\users\user\desktop\ff.#.lnk
    c:\users\user\desktop\ff.$nake.lnk
    c:\users\user\desktop\ff.0.lnk
    c:\users\user\desktop\ff.1.lnk
    c:\users\user\desktop\ff.2.lnk
    c:\users\user\desktop\ff.3.lnk
    c:\users\user\desktop\ff.4.lnk
    c:\users\user\desktop\ff.5.lnk
    c:\users\user\desktop\ff.6.lnk
    c:\users\user\desktop\ff.7.lnk
    c:\users\user\desktop\ff.azure.lnk
    c:\users\user\desktop\ff.body.lnk
    c:\users\user\desktop\ff.game.lnk
    c:\users\user\desktop\ff.lex.lnk
    c:\users\user\desktop\ff.m$.net.lnk
    c:\users\user\desktop\ff.net-war.lnk
    c:\users\user\desktop\ff.neuro.lnk
    c:\users\user\desktop\ff.rss-0.lnk
    c:\users\user\desktop\ff.rss-1.lnk
    c:\users\user\desktop\ff.rss-2.lnk
    c:\users\user\desktop\ff.rss-3.lnk
    c:\users\user\desktop\ff.rss-4.lnk
    c:\users\user\desktop\ff.rss-5.lnk
    c:\users\user\desktop\ff.rss-6.lnk
    c:\users\user\desktop\ff.rss.lnk
    c:\users\user\desktop\ff.skt.lnk
    c:\users\user\desktop\ff.sql.lnk
    c:\users\user\desktop\ff.w.lnk
    c:\users\user\desktop\ff.x.lnk
    c:\users\user\desktop\ff.z.g.p.lnk
    c:\users\user\desktop\ff.z.s.s.lnk
    c:\users\user\desktop\ff.?.lnk
    c:\users\user\desktop\ff.?.lnk
    c:\users\user\desktop\HDDScan.lnk
    c:\users\user\desktop\HxD64.lnk
    c:\users\user\desktop\KeePassXC.lnk
    c:\users\user\desktop\rufus.lnk
    c:\users\user\desktop\Scanner.lnk
    c:\users\user\desktop\ShareX.lnk
    c:\users\user\desktop\test.pdf
    c:\users\user\desktop\TV.lnk
    c:\users\user\desktop\uCalendar.lnk
    c:\users\user\desktop\UWT4.lnk
    c:\users\user\desktop\WatchMe.lnk
    c:\users\user\desktop\Wire.lnk
    c:\users\user\desktop\WSU18x64.lnk
    c:\windows\bfsvc.exe
    c:\windows\bootstat.dat
    c:\windows\DtcInstall.log
    c:\windows\EnterpriseS.xml
    c:\windows\explorer.exe
    c:\windows\HelpPane.exe
    c:\windows\hh.exe
    c:\windows\KB909394.log
    c:\windows\lsasetup.log
    c:\windows\mib.bin
    c:\windows\notepad.exe
    c:\windows\PFRO.log
    c:\windows\regedit.exe
    c:\windows\setupact.log
    c:\windows\setuperr.log
    c:\windows\splwow64.exe
    c:\windows\system.ini
    c:\windows\twain_32.dll
    c:\windows\win.ini
    c:\windows\WindowsShell.Manifest
    c:\windows\WindowsUpdate.log
    c:\windows\winhlp32.exe
    c:\windows\WMSysPr9.prx
    c:\windows\write.exe

    Ответ написан
    Комментировать
  • Событие KeyPress у TextBox. Как сделать один формат для различных TextBox?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - https://duckduckgo.com/?q=winforms+TextBox+validat...
    2 - https://duckduckgo.com/?q=wpf+TextBox+validation&t...

    выбрать нужное upd и да, там не только числа вводить, можно задать форматы для только положительных чисел, количество знаков после запятой, денежных величин, даты и/или времени в нужном формате, емейлов, урлов, ФИО, и тд..
    для изучения
    самое то
    upd 2 чуть не забыл - один валидатор без проблем можно вешать на пачку однотипных полей ввода, практикуйтесь (изучите внимательнее окно свойства в дизайнере, если это винформы)
    Ответ написан
    2 комментария