• Как реализовать поиск в DataGrid?

    @cicatrix
    было бы большой ошибкой думать
    Если у DataGrid есть источник данных, то лучше искать по этому источнику. Если источника данных нет, то делай
    обход в цикле каждой ячейки, где искать, проверяй, встречается ли искомая комбинация в тексте каждой ячейки.
    Если нужен регистронезависимый поиск (без разницы, большими или маленькими буквами написано), то либо приводить текст каждой ячейки к верхнему/нижнему регистру при сравнении (то же самое с искомым текстом), либо регулярным выражением.
    Ответ написан
    Комментировать
  • Программа для двухмерной графики?

    @cicatrix
    было бы большой ошибкой думать
    Inkscape (для векторной)
    https://inkscape.org/ru/

    Gimp (для растровой):
    (там есть русская локализация, выбирается при установке, вроде). Отдельно справочный файл можно тоже на русском скачать
    https://www.gimp.org/downloads/
    Ответ написан
    Комментировать
  • Раскадровка изображений в C#, как сделать?

    @cicatrix
    было бы большой ошибкой думать
    А в чём сложность? Тут больше условие непонятно, а не реализация.

    В каком именно виде поступает это "дерево", как кодируется? Требуется ли сохранять порядок изображений? Что делать, если ω < ширины самого узкого изображения или такая ситуация не предусмотрена условием?
    Вот набор картинок file1.jpg, file2.jpg, file3.jpg, file4.jpg, file5.jpg.
    Как подаётся информация, что file2, file4 и file5 образовывают колонку?

    Ну и не стоит надеяться, что этот курсач здесь за вас кто-нибудь напишет. Вы пишите, что сами уже сделали и что конкретно не получается.
    Ответ написан
    Комментировать
  • Есть ли метод генерации большого простого числа с факторизацией p - 1?

    @cicatrix
    было бы большой ошибкой думать
    Для изобретения велосипеда и обучения тому, как всё это работает, генерить большие числа не требуется.
    Если уж очень хочется - то вот, ознакомьтесь. Ну и либо Решето Аткина, ну или того же Эратосфена.
    Это первое.
    Второе: никогда, никогда, никогда, никогда, никогда не пытайтесь реализовать криптографические алгоритмы для любых целей, кроме образовательных. Никогда не используйте собственную реализацию для защиты хоть чего-либо важного. Я вас, конечно, не знаю, но докторской степени по математике и нескольких лет опыта в криптографии и криптоанализе у вас, скорее всего, нет.
    Ответ написан
    5 комментариев
  • Почему не меняется цвет в картинке?

    @cicatrix
    было бы большой ошибкой думать
    Во-первых, это всё будет работать жутко медленно, если картинка хоть сколько-нибудь крупного размера. Кроме того, при скролле, программа будет "подвисать".
    Во-вторых, вот здесь:
    ((Bitmap)pictureBox1.Image).SetPixel(i, j, Color.FromArgb(hScrollBar4.Value, hScrollBar1.Value, hScrollBar2.Value, hScrollBar3.Value))

    Вы меняете копию картинки, а не напрямую картинку из Picturebox. Теперь надо изменённую картинку заново назначить в Picturebox.
    Ответ написан
    Комментировать
  • C# ASP.NET. Почему не передается модель?

    @cicatrix
    было бы большой ошибкой думать
    Через веб-запрос передаётся только СТРОКА (string).
    public void Create(string title, User model)
    Что за тип User? ASP.Net знает, как десериализовать тот JSON, что вы передаёте в тип User?
    Вы передаёте строку (JSON.stringify), а хотите получить какой-то объект. Замените на:
    public void Create(string title, <b>string</b>model)

    В model прилетит строка с JSON, уже внутри контроллера парсите и создаёте нужный объект.
    Ответ написан
    Комментировать
  • Зачем в методе нужен массив и что делать что бы при вводе данных в массив не выкидывало исключение?

    @cicatrix
    было бы большой ошибкой думать
    Вы код спастили криво, по всей видимости. У вас func вложена в main. Это во-первых, а во вторых, зачем - это ведь быстрая сортировка, и да, чтобы отсортировать массив, надо ей его передать. А ввода данных в массив в вашем коде не присутствует в настоящее время.
    Ответ написан
    4 комментария
  • Какой впн выбрать?

    @cicatrix
    было бы большой ошибкой думать
    Если вопрос о том, какого из провайдеров выбрать, то вот актуально поддерживаемая сравнительная таблица по всем более-менее известным VPN сервисам.
    Сервисом, не указанным в этом списке, я бы пользоваться поостерёгся. Помеченными как "Enemy of the Internet", впрочем, тоже.
    Ответ написан
    Комментировать
  • Как при проверке формы не перемещалась на вверх страница?

    @cicatrix
    было бы большой ошибкой думать
    Если просто тупо сделать форму, то при нажатии на кнопку типа Submit будет происходить POST запрос с соответствующей перезагрузкой страницы.
    Тут возможно несколько вариантов. Если валидацию можно безопасно сделать на клиенте, делайте на клиенте, отправляя форму программно. Либо делать AJAX запрос.
    В любом случае вместо
    <button type="submit".. >
    указывайте
    <button type="button"..>

    Дальше ловите нажатие этой кнопки и либо отправляйте данные через AJAX, либо через клиентскую валидацию решайте, отправлять форму или нет.
    Ответ написан
    Комментировать
  • Русификация .dll?

    @cicatrix
    было бы большой ошибкой думать
    dll вообще-то разные бывают.
    Если коротко отвечать, то никак. По уму - обращаться к автору библиотеки и просить глобализацию. Если этот вариант не подходит, то кракозябры появляться могут из-за разных факторов. В частности, ещё вопрос, какую текстовую кодировку используется сама игра, предусмотрены ли вообще в ней шрифты с кириллицей.
    Если и да, то в какой кодировке?
    Ответ написан
  • Где быстро изучить основы WCF?

    @cicatrix
    было бы большой ошибкой думать
    Там, в целом, изучать особо нечего. Главное принцип понять, а дальше, если опыт есть само пойдёт.
    Вот хороший пример с калькулятором.
    Ответ написан
    Комментировать
  • Почему var привелся к int?

    @cicatrix
    было бы большой ошибкой думать
    Евгений Семашко, Это не тонкости и приколы, а часть спецификации языка.
    (Вот ссылка, если интересно).

    Если в двух словах, для каждого оператора предусмотрено несколько перегрузок, в зависимости от типа операндов. В частности, для деления (подробнее здесь) предусмотрено целочисленное деление, деление с плавающей точкой (IEEE 754) и десятичное.

    Здесь, поскольку оба операнда одного типа, применяется целочисленное деление. Чтобы использовать другую перегрузку, необходимо, чтобы хотя бы один из операндов был числом с плавающей точкой или десятичным.
    7 / 2 = 3
    7f / 2 = 3.5
    Ответ написан
    Комментировать
  • Как решить задачу?

    @cicatrix
    было бы большой ошибкой думать
    Обновил - написал вроде бы работающий код решения в комментариях (С#).
    Ответ написан
  • Как лучше делать запросы в БД разом или несколько раз для получения данных?

    @cicatrix
    было бы большой ошибкой думать
    Вброшу свои мысли. 10К пользователей, разбитые на странички по 15 будут представлять собой 6667 страниц.
    Да, разумеется, можно сделать подобную разбивку, так как здесь уже писали, но это равно сделать "на от.бись!"
    Совершенно очевидно, что ни один человек в здравом уме и трезвой памяти не будет листать 6К страниц.
    Естественно, усвоив это, необходимо вернуться в начало и понять, каких именно пользователей и по каким критериям будет в этом интерфейсе искать оператор. Видимо, ему не нужны все пользователи без исключения, ему нужны какие-то особенные, отличающиеся по какому-либо признаку. Соответственно и интерфейс предоставлять такой, чтобы облегчить этот поиск.
    Ответ написан
    Комментировать
  • Обработка одномерных массивов, как доработать код?

    @cicatrix
    было бы большой ошибкой думать
    А зачем пилить 2 прохода? Можно сразу на этапе ввода определять, положительное или нет.
    Ну и Convert.ToDouble - плохая практика. Лучше Double.TryParse
    Console.WriteLine("Введите 10 элементов массива:");
    double[] m = new double[10];
    int lastPositive = -1;
    for (int i = 0; i < 10; ++i)
    {
        
       bool validate = false; // Флаг правильного ввода пользователя
       while (!validate)
       {
          Console.Write($"№ {i}:");
          validate = double.TryParse(Console.ReadLine(), out m[i]); // Вернёт false если пользователь ввёл фигню
       }
       if (m[i]  > 0) lastPositive = i;
    }
    if (-1 == lastPositive) Console.WriteLine("Положительных чисел не вводилось");
    else 
    Console.WriteLine($"Последнее положительное число имеет индекс {lastPotitive}");
    Ответ написан
    Комментировать
  • Как изменить позиционирование контрола при dock?

    @cicatrix
    было бы большой ошибкой думать
    При borderless окне у него клиентская часть совпадает с физическими размерами. Когда есть граница и заголовок, клиентская часть меньше. Нативными средствами .NET переопределить клиентскую часть окна, вроде бы, нельзя, но средствами Win32API можно. Попробуйте переопределить клиентскую часть окна при помощи AdjustWindowRectEx.
    Ответ написан
    Комментировать
  • Как передавать заголовки POST через HttpRequest?

    @cicatrix
    было бы большой ошибкой думать
    В двух словах, после создания запроса, надо открыть RequestStream, записать в него все POST данные и отправить на сервер.
    Вот выдернул из готового проекта отправку POST запроса:
    // в data передаются параметры POST (ключ - значение)
    // если надо загрузить файл - передаётся в file
    internal static string Post(string url, Dictionary<string, string> data, FileUploadData file = null)
            {
                string ServerResponse = null;
                HttpWebRequest wrq = (HttpWebRequest)HttpWebRequest.Create(url);
                wrq.Method = WebRequestMethods.Http.Post;
                wrq.UserAgent = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + 
                                System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
                wrq.Timeout = 600000;
                try
                {
                    // Это на случай использования прокси, можно выкинуть
                    if (Config.UseProxy)
                    {
                        WebProxy proxy = new WebProxy(Config.ProxyAddress, Config.ProxyPort);
                        if (Config.ProxyLogin != string.Empty || Config.ProxyPass != string.Empty)
                        {
                            proxy.Credentials = new NetworkCredential(Config.ProxyLogin, Config.ProxyPass);
                            proxy.UseDefaultCredentials = false;
                        }
                        else
                        {
                            proxy.UseDefaultCredentials = true;
                        }
                    }
    
                    if (null == file) // проверяем, надо ли загружать файл на сервер
                    {
                        wrq.ContentType = "application/x-www-form-urlencoded";
                        Stream requestStream = wrq.GetRequestStream();
                        List<string> keydata = new List<string>();
                        foreach (string key in data.Keys)
                        {
                            keydata.Add($"{HttpUtility.UrlEncode(key)}={HttpUtility.UrlEncode(data[key])}");
                        }
                        WriteToStream(requestStream, string.Join("&", keydata));
                        requestStream.Flush();
                    }
                    else
                    {
                        // Формируем multipart/form-data (отправка данных с формы)
                        string boundary = "----------" + DateTime.Now.Ticks.ToString("x");
                        wrq.ContentType = "multipart/form-data; boundary =" + boundary;
                        Stream requestStream = wrq.GetRequestStream();
                        WriteMultipartForm(requestStream, boundary, data, file);
                    }
                    // Посылаем данные на сервер и ждём ответа
                    wrq.BeginGetResponse(a =>
                    {
                        try
                        {
                            WebResponse resp = wrq.EndGetResponse(a);
                            Stream respStr = resp.GetResponseStream();
                            using (StreamReader sr = new StreamReader(respStr))
                            {
                                ServerResponse = sr.ReadToEnd();
                            } // using sr
                    } // try
                    catch (Exception ex)
                        {
                            Logger.LogError("Transport.Post", Globalizer.ID_Transport_Request_executing_error, ex);
                        } // catch
                }, null);
                }  // try
                catch(Exception ex)
                {
                    Logger.LogError("Transport.Post", Globalizer.ID_Transport_Could_not_connect_to_server, ex);
                    return null;
                }
                return ServerResponse;
            } // Post
    
    private static void WriteMultipartForm(Stream s, string boundary, Dictionary<string, string> data, FileUploadData file)
            {
                /// The first boundary
                byte[] boundarybytes = Encoding.UTF8.GetBytes("--" + boundary + "\r\n");
                /// the last boundary.
                byte[] trailer = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
                /// the form data, properly formatted
                string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
                /// the form-data file upload, properly formatted
                string fileheaderTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\";\r\nContent-Type: {2}\r\n\r\n";
    
                /// Added to track if we need a CRLF or not.
                bool bNeedsCRLF = false;
    
                if (data != null)
                {
                    foreach (string key in data.Keys)
                    {
                        /// if we need to drop a CRLF, do that.
                        if (bNeedsCRLF)
                            WriteToStream(s, "\r\n");
    
                        /// Write the boundary.
                        WriteToStream(s, boundarybytes);
    
                        /// Write the key.
                        WriteToStream(s, string.Format(formdataTemplate, key, data[key]));
                        bNeedsCRLF = true;
                    }
                }
    
                /// If we don't have keys, we don't need a crlf.
                if (bNeedsCRLF)
                    WriteToStream(s, "\r\n");
    
                WriteToStream(s, boundarybytes);
                WriteToStream(s, string.Format(fileheaderTemplate, file.FieldName, file.Filename, file.ContentType));
                /// Write the file data to the stream.
                WriteToStream(s, file.FileData);
                WriteToStream(s, trailer);
            }
    
    private static void WriteToStream(Stream s, string txt)
            {
                byte[] bytes = Encoding.UTF8.GetBytes(txt);
                s.Write(bytes, 0, bytes.Length);
            } // WriteToStream
    Ответ написан
    Комментировать
  • C#, что не так?

    @cicatrix
    было бы большой ошибкой думать
    Приведите listen к родному типу, object индексирование не поддерживает.
    Ответ написан
    Комментировать
  • Как избавится от потери точности при ReadProcessMemory для float под c#?

    @cicatrix
    было бы большой ошибкой думать
    float - 32 бита в памяти.
    885px-Float_example.svg.png
    Ответ написан
    Комментировать