• Нужно написать аналог regedit в Windows для курсовой на c++ или c# с графическим интерфейсом. С чего начать? Каие библиотеки и технологии посоветуете?

    GavriKos
    @GavriKos
    Пишется достаточно просто. Все что вам нужно:
    - знание функций, которые позволяют работать с реестром. Они есть по моему в winAPI, ну или гуглятся очень быстро
    - какой то фреймворк для простого формошлепства. Если навыков все равно нет - Qt рекомендую.

    Главное разделите модель, данные и вьюху - не пытайтесь сразу нарисовать дерево реестра напрямую.
    Ответ написан
    1 комментарий
  • Возможно ли использовать Visual Studio 2017(для c++) как portalbe?

    GavriKos
    @GavriKos
    90% что никак - вижла сильно много пишет в системные директории - фиг вычистишь потом.

    Попробуйте не совсем IDE, но: Sublime Text, VS Code. К ним без проблем прикручиваются компиляторы типа gcc
    Ответ написан
    1 комментарий
  • Можно ли как-то в c++ узнать принадлежность объекта классу?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Зачем вам это? Есть полиморфизм, а касты -- это плохой стиль почти всегда.

    Можно много чего использовать, в том числе и тэги. В базовом классе создаёте перечисление, где каждый элемент -- тип наследника + 1 элемент на тип базового класса. В базовом классе определяете виртуальный метод вроде type() и реализуете его для всех наследников.

    Но перед тем, как сделать это, хорошо подумайте над тем, надо ли оно вам. Про SOLID почитайте, в особенности про букву L.
    Ответ написан
    Комментировать
  • Как разрядить наелектризованный компьютер?

    zamboga
    @zamboga
    Бизнес-аналитика, фин. моделирование, дашборды
    Самый простой способ — сначала касаться наэлектролизованного предмета, держа что-то металлическое в руке. Например, ложку, скрепку, кольцо на пальце и тд.
    Тогда искра будет между этими предметами, а вы почти ничего не заметите, разве что при очень сильной искре (=разности потенциалов) волосы на голове встают дыбом :)
    У меня уже давно выработалась привычка — сначала кольцом на пальце касаться, потом уже руками.
    Ответ написан
    Комментировать
  • Как разрядить наелектризованный компьютер?

    Вангую, у Вас не статика, а , как выше написали - утечка через конденсаторы БП. Вообще странно, что нет заземления . Скорее всего оно есть в главном щитке, или даже на этаже. Но из экономии Вам просто на розетки не развели его. Система отопления пластиком разведена? Если металлом.. ну Вы поняли.
    Ответ написан
    Комментировать
  • Как обрабатывать все элементы макроса?

    @res2001
    Developer, ex-admin
    Универсальный вариант на макросах не сделать, имхо.
    Ответ написан
    3 комментария
  • Как работают указатели на таблицу виртуальных функций?

    @MiiNiPaa
    стараюсь предерживаться стандарта, но вот в 11 не нашел ни слова о том как создается таблица виртуальных функций в таком случаи
    С точки зрения стандарта таблицы виртуальных функций не существует, а выбирается функция магией.

    Теперь насчёт вопроса. Посмотрите на более простой пример:
    struct base
    {
        virtual void foo() {}
    };
    
    struct derived: base
    {
        virtual void bar() {}
    };
    
    std::cout << sizeof(base) << '\n'
               << sizeof(derived) << '\n'
    (представляем 32битную машину и указатели по 4 байта)
    4
    4

    То есть, при наследовании в общем случае дополнительных указателей на таблицу виртуальных функций не происходит (и это хорошо, страшно представить что бы случилось после десятка наследований). Где же хранится указатель на bar?
    Ответ прост: он дописывается в единственную таблицу виртуальных функций, сразу же после указателей на функции базового класса.

    Экстраполируя на вашу проблему ответ очевиден: фунцкия дописывается в одну из таблиц созданных для работы с функциями предков. Скорее всего к самой первой.
    Ответ написан
    8 комментариев
  • Сервер с БД на QT?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    В Qt есть огромное количество штатных средств для работы со всеми популярными СУБД. И даже Firebird есть.

    QSqlDatabase
    Ответ написан
    1 комментарий
  • Сервер с БД на QT?

    IGHOR
    @IGHOR Куратор тега Qt
    Qt/C++ DEV/CTO
    1. TCP не особо и плох. Сомневаюсь что у вас будет больше 1000 сокетов одновременных.
    2. Можно использовать SQLite файл, и напрямую проганять через него клиентские команды, а можно и на QHash организовать подобие базы, а на Qt Script принимать запросы. Первый вариант проще.
    Ответ написан
    6 комментариев
  • Как обратиться по индексу к списку C++?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Советую попробовать реализовать сортировку слиянием, и самом написать класс/структуру списка. Это отличное упражнение, чтобы понять как работает популярный алгоритм сортировки и разобраться со списками.
    Возможно это напрямую не пригодится вам в работе, но выправит мышление (а вот это уже пригодится!) и позволит пройти собеседования в более-менее серьезные компании. На собеседованиях обычно бывает от одной до нескольких алгоритмических задач.
    Ответ написан
    1 комментарий
  • Превышение объёма памяти в C#?

    @none7
    Если выводить в файл это единственное, что нужно делать с данными, то лучше генерировать их по необходимости. Так памяти много не понадобиться.
    public static IEnumerable<string> GetNumbersRange (int numberLength, int start, int end)
    {
        string format = "D" + numberLength;
        for (int i = start; i < end; i++)
            yield return i.ToString(format);
    }
    
    public static IEnumerable<string> GetOperatorNumbers(IEnumerable<string> operators, IEnumerable<string> numbers, int countryCode)
    {
        string Country = "";
        if (countryCode > 0)
        {
            Country = DATA.Code[countryCode].ToString();
        }
    
        foreach (var op in operators)
            foreach (var num in numbers)
                yield return Country + op + num;
    }
    
    File.AppendAllLines("file.txt", GetOperatorNumbers(...));
    Ответ написан
    2 комментария
  • Progress Bar & Thread в C#?

    tomnolane
    @tomnolane
    профессиональный разработчик
    Kirill Rud: я не понял что вы в коде подразумеваете под "Downloder"... если это WebClient downloader= new WebClient(); то, у него есть специальный метод для асинхронной загрузки (чтобы не создавать отдельный поток)
    // DownloadFile(...) - загрузка в главном потоке
    downloader.DownloadFileAsync(new Uri("ввв.сайт.ру"), "C:\\temp.zip"); // - загружает асинхронно в отдельном потоке, т.е. "DATA.SubThread = new Thread(() =>" <- создавать не нужно.

    после чего "Downloder" нужно подписать на эвенты (события).. ниже в примере создаётся два события: во время загрузки и по окончанию загрузки:
    private void button1_Click(object sender, EventArgs e) //нажимаем кнопку "загрузить"
      {
       string url = "http://****.ру.*****1.zip";
       WebClient downloader = new WebClient();
       downloader.DownloadFileCompleted += new AsyncCompletedEventHandler(downloader_DownloadFileCompleted); // привязываем эвент когда файл загрузится
       downloader.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downloader_DownloadProgressChanged); // привязываем эвент когда файл загружается (в процессе)
       downloader.DownloadFileAsync(new Uri(url), "C:\\temp.zip"); // загружаем не блокируя главный поток
      }
    
     void downloader_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) // событие по которому передается в прогресс бар кол-во процентов загруженной информации
       { 
          progressBar1.Value =  e.ProgressPercentage; // progressBar1 - ваш прогресс бар
        }
      void downloader_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) // событие по окончанию загрузки (п.с. как пример, в рабочем варианте использовать MessageBox лучше не стоит, т.к. он блокирует основной поток (форма зависает, пока не нажмёте кнопку "ок")
       {
           if (e.Error != null)
             MessageBox.Show(e.Error.Message);
           else
             MessageBox.Show("Загружено!!!");
       }

    усё вроде...
    Ответ написан
    7 комментариев
  • Progress Bar & Thread в C#?

    @John_Nash
    coder
    анонимный делегат без параметров так записывается через лямбда-выражение
    Ответ написан
    2 комментария
  • Как задать выполнение функции для кнопки c#?

    petermzg
    @petermzg
    Самый лучший программист
    GamesDownload[i].Click += button1_Click;
    
            private void Button1_Click(object sender, EventArgs e)
            {
                throw new NotImplementedException();
            }
    Ответ написан
    5 комментариев
  • Как определить доступ к сайту C#?

    GavriKos
    @GavriKos
    В любом случае - все операции с интернетами - только в параллельном потоке. И никак иначе. Хочется-не хочется - это правильно.

    По ускорению - можно поискать системные какие то методы наличия подключения. Типо если подключения нет вообще - то и пинговать нечего.

    А так ускорить сам пинг - по сути никак - а вдруг сервер отвечает но мееедлееенно.
    Ответ написан
    2 комментария
  • Как програмно "положить" элемент формы в панель c#?

    @Got_Oxidus
    Учусь
    panel.Controls.Add(MyButton);
    panel - ваша панель.

    Controls - свойство. Возвращает коллекцию элементов управления, содержащихся в элементе управления.
    Подробнее на msdn

    Add (Control)- метод. Добавляет указанный элемент управления в коллекцию элементов управления.
    Подробнее на msdn
    Если у вас массив кнопок, то используйте метод AddRange.
    Ответ написан
    Комментировать
  • Какую среду разработки 3D приложения выбрать?

    TrueBers
    @TrueBers
    Гуглю за еду
    kkrieger — это высший пилотаж. Там используются особенности загрузчика Windows, соответственно, его предварительно дизассемблировали и изучили, чтобы подстроиться под его косяки и убрать ненужные заголовки, которые будут занимать место.

    Далее, там используется процедурное генерирование. Т. е. текстуры, звуки, эффекты генерируются по формулам, каким-то шаблонам, фракталам, и т. д.

    Всё это, по сути, спорт, состязание демо-групп. Реальные вещи на этом делать слишком долго и затратно. Но в плане теории, можно хорошо подтянуться. Поковыряйте исходники движка, на котором написан кригер, они открыты, но довольно устарели уже.

    Для реальных вещей, начните учить, например, OpenGL 3.2+, шейдеры, различные технологии, типа abmient occlusion, post processing effects.

    А 40 мегабайт планка... это МНОГО. Если учить чистое графическое АПИ, и ничего лишнего не писать, у вас будет всё весить сотни килобайт. Но, опять же, это всё необходимо только для изучения основ и понимания, как оно всё там работает. Для реального продакшена или даже прототипирования лучше возьмите попсовый движок, тот же юнити или анрил. Будет и проще, и быстрее, и удобнее. Ибо, мобильные видеоадаптеры это костыль-driven development. Обычно видео-драйверы там ОЧЕНЬ сырые, ОЧЕНЬ баганые, их реализации графических апи могут абсолютно не соответствовать стандарту. То, что у вас запустилось на Mali, может совершенно не работать на PowerVR или другом чипе. Поэтому не советую привязываться к низкому уровню в мобильной разработке, берите уже проверенный временем движок, в котором решена большая часть этих проблем, и костыли уже расставлены на своих местах. Иначе, будете биться с косяками производителей видеочипов, а не работать с графикой.
    Ответ написан
    Комментировать
  • Как заспаунить статичный BackGround в Qt?

    @Yapparov_Ilyas
    QGraphicsView* view= new QGraphicsView;
    QPixmap img;
    img.load("some_image");
    view->setBackgroundBrush(img.scaled(*QSize*));

    Устанавливайте фон ровно под размер вашего виджета, тогда дублирования картинки можно избежать. Если окно меняет размер, то переопределите resizeEvent.
    Также скорее всего придется установить размер рабочей области setSceneRect, иначе фон начнет бесконечно расширяться при выходе объекта за пределы окна.
    Ответ написан
    8 комментариев