а ща немного #говнокод 'а (note: чутка поправлен и почищен, чтобы не было больших простыней):
#упрлс #winapi #cpp
BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
char buf[MAX_PATH];
static char exename[100] = "makensis.exe";
switch (msg) {
case WM_INITDIALOG:
// Поищем скрипты в каталоге, в котором лежит программа (CurrentDirectory)
find_default_script_nsi(hDlg);
// Поищем папку компилятора.
if (!get_nsis_def_dir(hDlg, buf, MAX_PATH, defname)) {
strcpy(buf, "D:\\progs\\NSIS\\");
}
SetDlgItemText(hDlg, IDC_EDIT_FOLDER_NSIS, buf);
return TRUE;
// case WM_ERASEBKGND:
// return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
switch (make_inst_uninst_files("Files\\", ".", ".\\inst.txt", ".\\uninst.txt")) {
case 0:
{
char *nsisfolder;
char *param;
build_param_string(hDlg, nsisfolder, param);
// MessageBox(hDlg,fld,param,0);
AllocConsole();
if (run_nsis(nsisfolder, exename, param) == 0) {
FreeConsole();
}
// удолить все эти строчки
free_param_strings(nsisfolder, param);
return TRUE;
}
default: __asm int 3;
return TRUE;
}
break;
case IDCANCEL:
EndDialog(hDlg, IDCANCEL);
return TRUE;
case IDC_BUTTON_BROWSE_SCR:
{
TCHAR buf[MAX_PATH] = { '\0' };
OPENFILENAME ofn = { sizeof(ofn) };
ofn.lpstrTitle = TEXT("Выберите файл скрипта установщика");
ofn.lpstrFile = buf;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFilter = TEXT("Скрипты NSIS (*.nsi)\0*.nsi\0")
TEXT("Текстовые файлы (*.txt)\0*.txt\0Все файлы (*.*)\0*.*\0");
if (GetOpenFileName(&ofn)) {
SetDlgItemText(hDlg, IDC_EDIT_FILE_NSI, buf);
} else {
DWORD err = CommDlgExtendedError();
if (err != 0) {
__asm int 3;
}
}
return TRUE;
}
}
return FALSE;
}
return FALSE;
}
#упрлс #winapi #cpp
Forwarded from pro.cxx Channel
Друзья! Поздравляем с принятием C++17!
https://twitter.com/stdcppru/status/837918035201703936
#isocpp #stdcpp #cpp17
https://twitter.com/stdcppru/status/837918035201703936
#isocpp #stdcpp #cpp17
Twitter
stdcppru
Поздравляем всех нас! С++17 принят! #stdcpp #cpp https://t.co/sYw51n7Y0m
Forwarded from 🐻Alex Fails🦥🏔🍓 ︙
Зацените, какое я когда-то посадил дерево:
#cpp #говнокод #упрлс
bool findStrInSimpleTree(const char *str, size_t len,
const SimpleTree &tree, size_t &out_val, bool str_is_substr/*=true*/)
{
// Если штука равна ноде в дереве, то:
// Если нода пустая, то возвращаем значение.
// Иначе ищем его по массиву
if (len < tree.node.len) {
return false;
}
if (_strnicmp(str, tree.node.str, tree.node.len) == 0) {
if (tree.subnodes_count != 0) {
for (size_t i = 0; i < tree.subnodes_count; i++) {
if (findStrInSimpleTree(str + tree.node.len,
len - tree.node.len, tree.subnodes[i],
out_val, str_is_substr)) {
return true;
}
}
}
// случай, если у нас входная строчка больше, чем строчка в дереве.
if (!str_is_substr && len > tree.node.len) {
return false;
}
out_val = tree.node.id;
return true;
} else {
return false;
}
}
#cpp #говнокод #упрлс
А для любителей пострелять в ногу^W^W^W низкоуровневых функций языка Си, таких, как memcpy/memmove, предлагается такой небольшой сниппет от участника чата pro.cxx @berkus:
https://godbolt.org/g/Ico7Z9
#cpp #memcpy #dontshootattheleg #cppsnippet #shootintheleg
https://godbolt.org/g/Ico7Z9
#cpp #memcpy #dontshootattheleg #cppsnippet #shootintheleg
Forwarded from pro.cxx Channel
13 мая в Минске пройдет шестая конференция по плюсам – C++ CoreHard Spring 2017 – https://conference.corehard.by/, организованная белорусским C++ сообществом CoreHard.
Будем рады видеть вас в нашем любимом городе в качестве участников. Кто захочет присоединиться удаленно – приглашаем на онлайн-трансляцию (она бесплатна, регистрация по ссылочке https://goo.gl/forms/8cQWn8O5n4Bvhubn2)
Наш youtube-канал – https://www.youtube.com/channel/UCifgOu6ARWbZ_dV29gss8xw
P.S. В Беларусь россиянам виза не нужна и до Минска час лету из Москвы и Питера :)
#cpp #conference #corehard
Будем рады видеть вас в нашем любимом городе в качестве участников. Кто захочет присоединиться удаленно – приглашаем на онлайн-трансляцию (она бесплатна, регистрация по ссылочке https://goo.gl/forms/8cQWn8O5n4Bvhubn2)
Наш youtube-канал – https://www.youtube.com/channel/UCifgOu6ARWbZ_dV29gss8xw
P.S. В Беларусь россиянам виза не нужна и до Минска час лету из Москвы и Питера :)
#cpp #conference #corehard
Forwarded from pro.cxx Channel
Видеоматериалы конференции C++ CoreHard Spring 2017
https://corehard.by/category/corehard-conf-spring-2017/
https://www.youtube.com/playlist?list=PLgsLnJ-wgYTZRDRK3jrSOoarFg0ART6Ea
#cpp #conference #corehard #video
https://corehard.by/category/corehard-conf-spring-2017/
https://www.youtube.com/playlist?list=PLgsLnJ-wgYTZRDRK3jrSOoarFg0ART6Ea
#cpp #conference #corehard #video
YouTube
C++ CoreHard Spring 2017 - YouTube
Новости с полей ISO C++.
Модули и Корутины теперь официально в C++20!
Upd1: доступен trip-report: https://www.reddit.com/r/cpp/comments/au0c4x/201902_kona_iso_c_committee_trip_report_c20/
#cpp #news #update #coro #modules
Модули и Корутины теперь официально в C++20!
Upd1: доступен trip-report: https://www.reddit.com/r/cpp/comments/au0c4x/201902_kona_iso_c_committee_trip_report_c20/
#cpp #news #update #coro #modules
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Forwarded from pro.cxx Channel (Alex Ф-ф-фэils!🌠︙)
Подоспел отчет о поездке от Антона Полухина на заседание комитета ISO C++ в Коне (Гавайи).
https://habr.com/ru/company/yandex/blog/438864/
#cpp #trip_report
https://habr.com/ru/company/yandex/blog/438864/
#cpp #trip_report
Хабр
Feature freeze C++20. Coroutines, Modules и прочее
На днях прошла встреча международного комитета по стандартизации C++ в американском городе Кона. Это была не просто встреча, а feature freeze! Никакие серьёзные новые идеи больше не могут...
Подоспел отчет о поездке РГ21 в комитет стандартизации C++:
https://habr.com/ru/company/yandex/blog/458938/
#cpp #wg21 #yandex #tripreport
https://habr.com/ru/company/yandex/blog/458938/
#cpp #wg21 #yandex #tripreport
Хабр
C++20 укомплектован, C++23 начат. Итоги встречи в Кёльне
На днях прошла встреча международного комитета по стандартизации C++ в Кёльне. В прошлый раз был принят feature freeze на C++20, так что комитет должен был обсуждать только исправления уже принятых...
Forwarded from pro.cxx Channel (Alex Ф-ф-фэils!🌠︙)
Отчёт о последней встрече международного комитета по C++ https://habr.com/ru/company/yandex/blog/474716/
#cpp #iso #wg21 #trip_report
#cpp #iso #wg21 #trip_report
Хабр
Баги C++20. Итоги встречи в городе Белфаст
На днях прошла встреча комитета по стандартизации языка программирования C++ в городе Белфасте. От представителей стран в комитет прилетело около 400 замечаний к...
Вот почему GCC [*и другие C++-компиляторы - Ред.] так долго компилируют код.
https://twitter.com/gf_256/status/1285217798642454531
#cpp #objection
https://twitter.com/gf_256/status/1285217798642454531
#cpp #objection
X (formerly Twitter)
cts🌸 (@gf_256) on X
So THIS is why gcc is so slow!
Компилятор языка BrainFuck на шаблонах C++.
Для запуска программы вам надо сделать стрелковой литерал вида "++++++++++>>>"_brain_fuck с вашей программой на BrainFuck, а потом , добавить в вашу программу на C++ приложенный исходник.
P.S. Давно хотел сам сделать, но как обычно, есть уже другой, кто это запилил🤷♂.
https://github.com/netcan/recipes/blob/master/cpp/metaproggramming/brain_fuck/BrainFuckTemplateMeta.cpp
#cpp #упрлс #принесли
Для запуска программы вам надо сделать стрелковой литерал вида "++++++++++>>>"_brain_fuck с вашей программой на BrainFuck, а потом , добавить в вашу программу на C++ приложенный исходник.
P.S. Давно хотел сам сделать, но как обычно, есть уже другой, кто это запилил🤷♂.
https://github.com/netcan/recipes/blob/master/cpp/metaproggramming/brain_fuck/BrainFuckTemplateMeta.cpp
#cpp #упрлс #принесли
GitHub
netcan/recipes
Here is my code snippet. Contribute to netcan/recipes development by creating an account on GitHub.
Forwarded from pro.cxx Channel (Alex Ф-ф-фэils!🌠︙)
Вышел очередной отчёт от Герба Саттера об осенней встрече комитета ISO C++. Эта встреча была проведена в формате виртуального заседания, и на ней обсуждали предложения в новый стандарт C++23, а также успели адаптировать несколько новых возможностей. Вот некоторые из них:
1. Наконец-то наше предложение о добавлении стектрейсов попало в стандарт!
2. Теперь вы можете проверять наличие подстроки в строке с помощью метода string.contains() вместо громоздкой старой версии
3. Литеральный суффикс для std::size_t:
4. Ещё одно свойство типа is_scoped_enum, позволяющее узнать, создает ли перечисление свою область видимости (т.е. , определено как
5. Адаптация атомиков из Си в C++.
Также приятной новостью стало создание новой учебной группы – SG22 – которая будет заниматься взаимодействием между рабочей группой 21, отвечающей за язык C++, и рабочей группой 14, отвечающей за язык Си.
Больше подробностей – по ссылке:
https://herbsutter.com/2020/11/13/trip-report-autumn-iso-c-standards-meeting-virtual/
#cpp #cpp23 #trip_report #isocpp #stacktrace
1. Наконец-то наше предложение о добавлении стектрейсов попало в стандарт!
2. Теперь вы можете проверять наличие подстроки в строке с помощью метода string.contains() вместо громоздкой старой версии
if (str.find("substr") != std::string::end) { /* found */ }. Поиск не учитывает регистр, в отличие от похожего метода в Qt.3. Литеральный суффикс для std::size_t:
42uz, схожий со спецификатором формата функции printf().4. Ещё одно свойство типа is_scoped_enum, позволяющее узнать, создает ли перечисление свою область видимости (т.е. , определено как
enum class);5. Адаптация атомиков из Си в C++.
Также приятной новостью стало создание новой учебной группы – SG22 – которая будет заниматься взаимодействием между рабочей группой 21, отвечающей за язык C++, и рабочей группой 14, отвечающей за язык Си.
Больше подробностей – по ссылке:
https://herbsutter.com/2020/11/13/trip-report-autumn-iso-c-standards-meeting-virtual/
#cpp #cpp23 #trip_report #isocpp #stacktrace
Sutter’s Mill
Trip report: Autumn ISO C++ standards meeting (virtual)
On Monday, the ISO C++ committee completed its final full-committee (plenary) meeting of 2020 and adopted the first changes to the C++23 working draft, including a few new features. This was a firs…