• Почему pause в cmd скрипте не предотвращает закрытие окна?

    @res2001
    Drovosek01,
    Мне нужен аналог функций как в других языках

    Как вариант функции можно выделять в отдельный командный файл и так же его вызывать через call. Работает аналогично функциям.
    Написано
  • Почему pause в cmd скрипте не предотвращает закрытие окна?

    @res2001
    @echo off
    
    set "path_bin_1=d:\TEMP\test.exe"
    call :testname "%path_bin_1%"
    
    echo "%path_bin_1%"
    echo "%filename%"
    
    pause
    goto :eof
    
    :testname
    echo %~1
    set file=%~1
    set filepath=%~dp1
    set filename=%~nx1
    goto :eof
    Написано
  • Почему pause в cmd скрипте не предотвращает закрытие окна?

    @res2001
    Drovosek01,
    Мне это не нужно. Мне нужен аналог функций как в других языках

    Метка-функция - это и есть аналог функции в других языках, другого тут не дано. Хорошо хоть это есть
    это только часть скрипта

    У тебя после goto:eof идет вывод и пауза - ну они не работают в этом случае.
    Конкретно по приведенному фрагменту - делай как я сказал.
    Хочешь подсказку по полному скрипту, покажи его весь.
    Написано
  • Почему pause в cmd скрипте не предотвращает закрытие окна?

    @res2001
    Drovosek01, Просто удали эту строку, она тут не нужна, если ты хочешь получить вывод и паузу
    Написано
  • Зачем в cmd bat (командной строке) создали режим enabledelayedexpansion?

    @res2001
    Стандартные переменные %VAR% такого не могут.

    Вполне могут.
    Ты можешь изменять переменные и следом использовать новые значения.
    Но это работает вне операторов for и if. В этих операторах другой синтаксис обращения к переменным, выше объяснил почему.
    Написано
  • Где в Windows хранятся свойства ярлыков?

    @res2001
    Kirgus,
    но официальный установщик уже давно не работает с Белорусских и Российских IP(((

    Использую ВПН. Правда бесплатные сервера отваливаются регулярно и приходится искать другие. Но т.к. нужно не то что бы очень часто, то схема рабочая.

    Кстати qt creator и его сборки есть на гитхабе. Можно просто брать от туда свежачок. Гитхаб пока не забанили для нас :-)
    https://github.com/qt-creator/qt-creator/releases
    Написано
  • Как написать вариадический оператор по SFINAE для умного указателя на Т, который может быть функцией?

    @res2001
    Для защиты от выгрузки DLL ваш умный указатель должен так же принимать в параметре и дескриптор открытой DLL. При вызове проверять средствами ОС, существует ли до сих пор дескриптор. Если не существует, то указателю можно присвоить какое-то не корректное значение и уже в следующий раз ничего не проверять.

    То же самое можно сделать, написав функцию обертку над функцией DLL, в которой будет все это проверяться.

    Обычно проще один раз грузить DLL при старте и получать указатели на функции, которые будут валидны все время выполнения программы. Тогда можно в принципе не заморачиваться на какую-то сложную защиту.

    Если же вам нужен именно вариант с загрузкой/выгрузкой DLL в ходе работы приложения, то надо что-то придумывать. Но отталкиваться надо не от указателей на функции, а от дескриптора библиотеки. Т.к. если дескриптор не валиден, то все указатели на функции этой библиотеки становятся не валидны автоматически.
    По идее, тут надо логикой программы гарантировать, что если библиотека была выгружена, то уже никогда не будет вызвана функция библиотеки. Другими словами, если в программе еще нужна функция из библиотеки, то библиотека не должна выгружаться. Например при получении адреса функции можно увеличивать счетчик ссылок дескриптора DLL, когда функция становится не нужной - счетчик уменьшать. Когда счетчик ссылок DLL будет 0 - библиотеку можно выгрузить.
    Написано
  • Как написать вариадический оператор по SFINAE для умного указателя на Т, который может быть функцией?

    @res2001
    Павел Соколов, По моему этим вариантом вы проблему вообще ни как не решаете.
    DLL может быть выгружена, а указатель при этом останется, только он теперь будет указывать в не распределенное пространство памяти. И вызов функции через этот указатель приведет к падению программы.
    Написано
  • Где в Windows хранятся свойства ярлыков?

    @res2001
    Kirgus, Рабочая папка в ярлыке при запуске программы преобразуется в текущий каталог в окружении запущенной программы. Но если путь не существует, то система подставляет какой-то свой (предположительно %SystemRoot%\system32). И если программа прекрасно работает с "каким-то" путем, то она скорее всего будет так же прекрасно работать с любым другим путем. Думаю нет смысла беречь этот не существующий путь. Вы можете скопировать оригинальный ярлык куда-нибудь, рабочий ярлык исправить и поработать какое-то время. Когда убедитесь, что все нормально, можно и копию будет грохнуть. Работа нормально написанной программы не должна зависеть от текущего каталога, т.к. этот фактор всегда может поменяться по независящим от программы причинам.

    На сколько я знаю Qt Creator к системе не привязывается и вроде бы его можно просто переложить в другое место и он будет работать от туда. Хотя я таких экспериментов не проводил. Предпочитаю ставить в другом месте с нуля. Даже если после переноса что-то не заработает, то можно запустить Maintenanse Tools и выполнить восстановление. Как-то так вижу.
    Написано
  • Какие самые большие пакеты пропускает ping в windows и как задать минимальную задержку между отправкой?

    @res2001
    Сайты открываются через раз

    Чем вам помогут большие пинги и уменьшение задержек на отправку? Кроме того в винде нельзя отрегулировать скорость отправки пингов. Можно задать только время ожидания ответа.

    Просто запустите вечный пинг (опция /t) и посмотрите как плавает время.
    Если случаются большие провалы по времени ответа или вообще пропадание ответов, то возможны проблемы:
    0. в вашем оборудовании
    1. у провайдера, пожалуйтесь прову на большие задержки, пусть исправляет ситуацию.
    2. возможно это проблемы на стороне удаленного хоста, тогда жаловаться надо его владельцам

    Проведите опыт для нескольких разных узлов в интернете, чтоб исключить вариант с проблемами на удаленном хосте.
    Написано
  • Где в Windows хранятся свойства ярлыков?

    @res2001
    Kirgus,
    А если указан несуществующий путь, то ты не сможешь внести другие правки в свойства этого ярлыка. Винда просто не позволит применить изменения...

    Есть такое.
    Программно можно создать ярлык можно с помощью WSH (JS/VBS) скрипта, там есть соответствующий объект. Можно ли поправить свойства существующего ярлыка - не знаю. Наверное есть соответствующие средства и в power shell.
    Но! Скажите нахрена вам в ярлыке не существующая рабочая папка? Если не знаете что указать - укажите %SystemRoot%\system32
    В конце концов, создайте этот путь временно, поправьте ярлык и удалите.
    Написано
  • Как исправить ошибку NameError: 'BoolVariable' is not defined при создании c++ сборки в godot-cpp?

    @res2001
    Эту ошибку компилятор выдает при сборке исходников. Ошибка в программе. Надо смотреть исходники. Начать с того места, куда отсылает ошибка и дальше раскручивать.
    Похоже, что переменная используется, но нигде не определена. Надо определить.

    PS: scons не при делах, лучше выкладывать текстом, а не скринами.
    Написано
  • Как увидеть русские символы в обычной строке в отладчике Visual studio?

    @res2001
    Дмитрий Зеленев, Если пользуетесь компилятором с поддержкой C++20, то можете поэкспериментировать с char8_t и u8string. Можно строку читать в массив char8_t, строковое представление делать с помощью u8string_view, а для записи в xlsx преобразовывать указатель на массив в char*. Только, видимо, надо будет озаботится самому наличием завершающего нуля в конце массива.
    Написано
  • Как увидеть русские символы в обычной строке в отладчике Visual studio?

    @res2001
    Дмитрий Зеленев, Для UTF8 нужно использовать wstring. string для однобайтовых кодировок.
    Написано
  • Как увидеть русские символы в обычной строке в отладчике Visual studio?

    @res2001
    Строка то откуда взялась? Из файла? В какой кодировке она в файле?
    Написано
  • Будут ли проблемы с монтированием раздела диска NTFS?

    @res2001
    В линукс ставь Samba client (во многих дистрибутивах стоит по умолчанию) и через него получай доступ к расшаренным с винды ресурсам. Samba - это свободная реализация сетевого протокола винды.
    Написано
  • Git удалил коммит/ы при переключении веток с помощью checkout?

    @res2001
    Может вопрос решиться командой:
    git log --all
    Написано
  • Код должен выводить только те буквы, которые встречались во всех словах, но вместо этого программа резко завершает работу. Что не так?

    @res2001
    Ланской Кирилл, Сложные структуры, работают сложно и соответственно дольше, чем простые, плюс еще используют динамическую память. Выделение/освобождение памяти - очень время затратная операция.
    Массив - самая простая структура в языке.

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

    На счет алфавитного порядка - буквы в ASCII таблице отсортированы по алфавиту (https://www.asciitable.com/), так что просто перебираете все буквы начиная с меньшего индекса и получаете автоматически упорядоченный список букв. Правда это верно только для английских букв, в русских кодировках (их несколько) это не для всех букв работает. Например в CP1251 и CP866, которые есть в винде по умолчанию буква 'ё' выбивается из порядка. В KOI8-R - вообще с этим бардак. Но в задании вроде бы нет условия выводить буквы в алфавитном порядке. Кроме того не известно какая кодировка будет на входе.
    На счет упорядочивания в set - не уверен, что set для charов использует именно алфавитное упорядочивание, скорее всего так же сравнивает по ASCII кодам. А значит упорядочивание будет таким же как с массивом. Но тут можно поиграться с шаблонным параметром Compare для Set (https://en.cppreference.com/w/cpp/container/set), задав в качестве компаратора функцию, которая умеет в алфавитное упорядочивание.
    Впрочем, что-то похожее можно придумать и при выводе букв из массива.
    Написано
  • Код должен выводить только те буквы, которые встречались во всех словах, но вместо этого программа резко завершает работу. Что не так?

    @res2001
    Зачем тут вообще список или еще более сложная структура? Все эти структуры работают с динамической памятью, а это дополнительные временные затраты.

    Вам надо просто посчитать количество вхождений каждой буквы и количество слов и вывести все буквы, где количество вхождений больше, чем количество слов.
    Для хранения счетчиков букв достаточно статического массива фиксированного размера uint32_t[256]. В этом массиве индекс будет ASCII кодом буквы.

    Но с таким подходом есть то же пара проблем:
    а) на сколько понял, первой строкой вы получаете список букв, которые надо посчитать, т.е. не все буквы надо учитывать, а только из списка;
    б) что делать со словами в которых одна буква встречается несколько раз?

    Проблема (б) решается заменой массива uintов на массив структур. Структура примерно такого вида:
    struct {
     uint32_t count_letter;
     uint32_t version;
    }

    count_letter - это счетчик букв, version - это "версия" - просто номер последнего слова в котором была эта буква.
    Перед тем как инкрементировать count_letter проверяете условие: version < current_word_number. Если условие выполняется - инкрементируете и обновляете версию, если не выполняется - значит эта буква в этом слове встречается не один раз и повторно ее не учитываем.

    Проблема (а) решается просто - первое слово, содержащее список букв, просто обрабатываем как обычное слово - инкрементируем счетчик букв и счетчик слов.
    Написано
  • Вызов функций С++ из .h?

    @res2001
    Имя,
    а если я создам C файл с функцией в которую вынесу нужный мне функционал библиотеки

    Перечитал тут ваш последний вопрос и возник встречный вопрос: что значит "вынесу"?
    Скопирую из заголовка в .cpp файл какой-то участок кода библиотеки?
    Это бесполезное занятие.
    В .cpp файле вы должны написать код, который будет использовать шаблонный класс/функцию из библиотеки.
    Т.е. это будет не код библиотеки, а ваш новый код.
    Копи-паст тут не прокатит.

    Подобная обертка для экспорта функционала обычно бывает очень простой, если не сказать элементарной - в вашей функции будет вызываться функция библиотеки, с соответствующими преобразованиями типов.
    Написано