Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/123: Рейтинг темы: голосов - 123, средняя оценка - 4.85
5 / 5 / 0
Регистрация: 31.03.2010
Сообщений: 71

Поиск папок с помощью FindFirstFile\FindNextFile

24.08.2010, 09:12. Показов 26758. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как найти только папки?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.08.2010, 09:12
Ответы с готовыми решениями:

FindFirstFile и FindNextFile рекурсивный поиск файла
Как безопасно (без всевозможных переполнений и высвобождением ресурсов) реализовать рекурсивный поиск файла на одном из разделов диска? Или...

FindFirstFile, FindNextFile и setLocale
Пытался пройти по файлам в каталоге, как в примере на MSDN. Написал такой код #include <windows.h> #include <iostream> ...

FindNextFile,FindFirstFile,FindClose
#include <windows.h> #include <iostream> #include<tchar.h> using namespace std; //strcpy, strcat //_tcscpy,_tcscat int...

51
Эксперт С++
 Аватар для Andrew_Lvov
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
24.08.2010, 09:31
C
1
2
3
4
LPWIN32_FIND_DATA data;
HANDLE h = FindFirstFile( "*.*", &data );
if( data.dwFileAttributes | FILE_ATTRIBUTE_DIRECTORY )
  // do something!!!
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
24.08.2010, 19:13
ну и еще - отфильтровывать каталоги "." и ".."
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
10.03.2014, 17:36
Andrew_Lvov, а как найти только файлы?
пробовал писать
C
1
data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
, но прога находит и файлы и папки
0
 Аватар для FreeMan108
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
10.03.2014, 19:29
Только папки

C++
1
2
3
4
if ( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
//...
}
Только файлы

C++
1
2
3
4
if ( !(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
{
//...
}
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
10.03.2014, 20:09
Цитата Сообщение от kukuruku310 Посмотреть сообщение
ну и еще - отфильтровывать каталоги "." и ".."
Я бы еще настоятельно рекомендовал отфильтровывать также всякие reparse points.
Определить можно по флагу FILE_ATTRIBUTE_REPARSE_POINT.
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
11.03.2014, 11:00
FreeMan108, спасибо) А как искать вложенные папки и файлы в них? Ну чтобы не только в папке по указанному пути а еще и те которые в них.

Добавлено через 8 минут
Цитата Сообщение от Убежденный Посмотреть сообщение
Я бы еще настоятельно рекомендовал отфильтровывать также всякие reparse points.
Определить можно по флагу FILE_ATTRIBUTE_REPARSE_POINT.
Правильно ли я делаю? Просто оно всёравно считает reparse points
C
1
2
3
4
5
6
7
8
9
10
11
12
13
if (fd.dwFileAttributes != FILE_ATTRIBUTE_REPARSE_POINT)
{
    if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
        printf("%s: %s\n", "Folder", fd.cFileName);
        dir++;
    }
    else
    {
        printf("%s: %s\n", "File", fd.cFileName);
        file++;
    }
}
Добавлено через 2 минуты
Конечно есть очень простое решение данной проблемы, просто сделать счётчику для дерикторий -2
0
 Аватар для FreeMan108
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
11.03.2014, 18:55
Цитата Сообщение от qwertun Посмотреть сообщение
if (fd.dwFileAttributes != FILE_ATTRIBUTE_REPARSE_POINT)
Здесь идет проверка не конкретного значения, а соответствующего бита (0 или 1).

C++
1
if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT))
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
11.03.2014, 19:19
Цитата Сообщение от FreeMan108 Посмотреть сообщение
C++
1
if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT))
Сделал, на .. срабатывает, а на . нет, еще оно на ярлыки сработало
0
 Аватар для FreeMan108
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
11.03.2014, 21:58
Короче! Вот полный фильтр

C++
1
2
3
4
5
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT))
if (fd.cFileName != ".")
if (fd.cFileName != "..")
// then clear directory
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
11.03.2014, 22:01
Цитата Сообщение от FreeMan108 Посмотреть сообщение
if (fd.cFileName != "..")
error C2440: !=: невозможно преобразовать 'const char [2]' в 'WCHAR [260]'
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
12.03.2014, 07:04
qwertun, 3 варианта решения:
1 - В свойствах проэкта не Юникод А Анси выберите кодировкой.
2 - Добавьте L("..")
3 - lstrcmp(fd.cFileName,"..")!=0
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
12.03.2014, 10:44
Цитата Сообщение от Izual Посмотреть сообщение
3 варианта решения
я просто затупил, я знаю что у меня юникод и что нада L дописать) Бывает)))

Добавлено через 12 минут
Начну со вступления.
Я пишу (ну "я пишу" это немного не то что нужно было бы сказать, скорее переделываю чужой) файловый менеджер. Я хожу по папачкам и на 1 клик рядом появляется инфа про папки или файлы.
И проблема в том что в переменной cFileName находится имя папки в которой я нахожусь, а не название той, которая выделена.
Допустим если я зашёл в папку "D:\Programmes" и 1 раз кликаю на папку с названием "." то в cFileName будет находится не ".", а "Programmes".
У меня есть переменная szBuf[] типа wchar_t где хранится весь путь к папке, на которую кликнули, в данном случае это "D:\Programmes\."

Добавлено через 11 минут
Цитата Сообщение от qwertun Посмотреть сообщение
У меня есть переменная szBuf[] типа wchar_t где хранится весь путь к папке, на которую кликнули, в данном случае это "D:\Programmes\."
попутал, не путь а название папку, тут "."

Добавлено через 3 минуты
Так вроде норм
C
1
2
3
if (!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT))
if (lstrcmp(szBuf, L".") != 0)
if (lstrcmp(szBuf, L"..") != 0)
Добавлено через 5 минут
Izual, А Вы случайно не знаэте как посчитать количество вложенных файлов и папок?
Как найти количество папок и файлов в папке, я знаю, но тот способ, который использую, я не и дёт дальше папку путь к которой указан.
Например возьмём всё ту же папку "D:\Programmes". Есть в ней например 10 папок и 3 файла, а в тех папках еще папки в которых еще папки и файлы.
Так вот способ который у меня покажет 10 папок и 3 файла и всё.
Его код
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void main()
{
    Dir("D:\\Programmes\\*.*");
}
 
void Dir(const char *root)
{
    WIN32_FIND_DATA fd;
    int dir = 0, file = 0;
    HANDLE hFind = FindFirstFile(root, &fd);
    if(hFind != INVALID_HANDLE_VALUE)
    {
    do
        {
            if (fd.dwFileAttributes != FILE_ATTRIBUTE_REPARSE_POINT)
            {
                if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                {
                    printf("%s: %s\n", "Folder", fd.cFileName);
                    dir++;
                }
                else
                {
                    printf("%s: %s\n", "File", fd.cFileName);
                    file++;
                }
            }
        }
        while(FindNextFile(hFind, &fd));
        printf("%d\n", file);
        printf("%d\n", dir);
        FindClose(hFind);
    }
}
Добавлено через 52 секунды
Как мне его модернизировать или какой другой использовать?
Погуглив нашёл только такой в разных вариантах записи.
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
12.03.2014, 15:30
qwertun, ну если есть - я не знаю, да и мне лично проще собственный алгоритм написать)
Алгоритм в принципе прост, вам же дали число - 10 папок, берите циклом эти папки и штрудируйте их на содержимое, естественно с учётом что в них тоже могут быть папки и ещё глубже, т.е. проще будет даже функцию отдельную написать чтоб сунуть её в цикл, т.е. при условии что файл - не файл, а папка - то выполняем функцию, и до конца...
Итоговый подчёт кол-ва файлов глобальной INT переменной... В общем задачка интересная, реализация даст пищу для ума, дерзайте)
1
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
12.03.2014, 18:48
Izual, я впринципи изначально так думал сделать, просто подумал, что есть какае-то встроенная функция или уже готовый алгоритм, который быстро работает.
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
18.03.2014, 00:29
Izual, помогите пожалуйста)
Я попытался сделать функцию для подсчёта количества вложенных файлов.

Алгоритм, по которому я пытался написать функцию, которая кстати рекурсивная: в окне файлового менеджера кликаем на необходимую папку и вызывается функция, которая в папке на которую кликнули если находит файл делает +1 к кол-ву файлов, а если папку, то сама себя-же вызывает, а как аргументы передаёт переменную hStaticTmp нужную для передачи предыдущей папке при первом вызове функции, название выбраной папки / найденной функцией, небольшую чекалку которую я добавил для проверки условия чем была вызвана функция кликом мышки или собою же, кол-во файлов, кол-во папок, размер папки, предыдущая папка.
Короче говоря, функция работает не так как хотелось бы. Проблема в переменной показывающей предыдущую папку.

Например:
есть несколько папок в папке
D:\test\1\11
D:\test\1\12

И вот что мы имеем:
Текущая папка D:\test (на неё кликнули мышкой)
Предыдущая папка NULL
-----
Текущая папка D:\test\1 (функция нашла папку и вызвала сама себя перейдя в эту папку)
Предыдущая папка D:\test
-----
Текущая папка D:\test\1\11 (функция нашла папку и вызвала сама себя перейдя в эту папку)
Предыдущая папка D:\test\1
-----
А вот тут проблемка!
Текущая папка D:\test\1\12 (по идее должна быть)
Текущая папка D:\test\1\11\12 (как в программе)
Предыдущая папка D:\test\1\11

Вобщем именно проблема с возвратом в предыдущую папку.
Люди добрые, помогите)

Кидаю код
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
void FileCountDirSize(HWND hStaticTmp, wchar_t szBuf[], int qwe, int dir, int file, int dirsize, wchar_t PrevDir[])
    {
        // szBuf   - название папки, в которой мы находимся
        // PrevDir - путь к папке уровнем выше (должно быть)
 
        wchar_t szTmpF[MAX_PATH] = { 0 };
        wchar_t TmpBuf[MAX_PATH] = { 0 };
        wchar_t SL[] = L"\\";
 
        SendMessage(hListInfo, LB_RESETCONTENT, 0, 0);
        wchar_t buf [MAX_PATH] = { 0 };
        wchar_t ForSearch [MAX_PATH] = { 0 };
        wchar_t ForSearchEnd [] = L"\\*.*";
 
        if (qwe == 0)
        {
            GetWindowText(hStaticTmp, buf, MAX_PATH);
            wcscat(ForSearch, buf);
            wcscat(ForSearch, szBuf);
            wcscat(ForSearch, ForSearchEnd);
            wcscat(buf, szBuf);
            qwe = 1;
        }
        else
        {
            wcscat(ForSearch, PrevDir);
            wcscat(ForSearch, SL);
            wcscat(ForSearch, szBuf);
            wcscat(ForSearch, ForSearchEnd);
            wcscat(PrevDir, SL);
            wcscat(PrevDir, szBuf);
            wcscat(buf, PrevDir);
        }
 
        WIN32_FIND_DATA FindFileData;
        HANDLE hFind;
 
        hFind = FindFirstFileW(ForSearch, &FindFileData);
 
        do
        {
            if (!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT))
            if (lstrcmp(FindFileData.cFileName, L".") != 0)
            if (lstrcmp(FindFileData.cFileName, L"..") != 0)
            {
                if (hFind == INVALID_HANDLE_VALUE)
                {
                    //MessageBox(0, L"Ошибка", L"Ненаиден", MB_OK | MB_ICONWARNING);
                }
                else
                {
                    
                    if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                    {
                        dir++;
                        FileCountDirSize(hStaticTmp, FindFileData.cFileName, qwe, dir, file, dirsize, buf);
                    }
                    else
                    {
                        file++;
                        dirsize += FindFileData.nFileSizeLow;
                    }
                }
            }
        }
        while(FindNextFile(hFind, &FindFileData));
 
        wsprintf(szTmpF, L"Кол-во файлов: %d", file);
        MessageBox(0, szTmpF, L"ololo", MB_OK | MB_ICONWARNING);
    }
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
21.03.2014, 14:40
Я написал код для подсчёта кол-ва вложенных файлов и папок!
Однако есть одно НО! Если в какой-то папке будет папок больше чем MAX_PATH, т.е. 260 прога будет работать не правильно(((

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
#include <wchar.h>
using namespace std;
void Dir(wchar_t root[]);
int GDir = 0, GFile = 0;
int main()
{
    setlocale(LC_ALL, "rus");
    // ========= File or Directory  ============================================= //
    Dir(L"D:\\Programmes\\EasyCleaner");
    printf("%d\n", GFile);
    printf("%d\n", GDir);
    system("pause");
}
void Dir(wchar_t root[])
{
    wchar_t buf[MAX_PATH] = { 0 };
    wchar_t buff[MAX_PATH] = { 0 };
    wchar_t SL[] = L"\\";
    wchar_t ForFind[] = L"*.*";
    wcscat(buf, root);
    wcscat(buf, SL);
    wcscat(buf, ForFind);
    WIN32_FIND_DATA FindFileData;
    int dir = 0, file = 0;
    HANDLE hFind = FindFirstFile(buf, &FindFileData);
    if(hFind != INVALID_HANDLE_VALUE)
    {
        wchar_t DirList[MAX_PATH][MAX_PATH] = { 0 };
        int i = 0;
        do
        {
            if (!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT))
            if (lstrcmp(FindFileData.cFileName, L".") != 0)
            if (lstrcmp(FindFileData.cFileName, L"..") != 0)
            {
                if (hFind == INVALID_HANDLE_VALUE)
                {
                }
                else
                {
                    if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                    {
                        wcscat(DirList[i], FindFileData.cFileName);
                        i++;
                        dir++;
                    }
                    else
                    {
                        file++;
                    }
                }
            }
        }
        while(FindNextFile(hFind, &FindFileData));
        int qwe = (int)sqrt((double)(sizeof(DirList)/sizeof(wchar_t)));
        for (int i = 0; i < qwe; i++)
        {
            if (wcscmp(DirList[i], L"") != 0)
            {
                wcscat(buff, root);
                wcscat(buff, SL);
                wcscat(buff, DirList[i]);
                Dir(buff);
                memset(buff, 0, sizeof(buff));
            }
            else
            {
                break;
            }
        }
        GFile += file;
        GDir += dir;
        FindClose(hFind);
    }
}
Добавлено через 7 минут
Чтоб не было ограничения в 260 папок я хотел вместо DirList[MAX_PATH][MAX_PATH] сделать vector<wchar_t[MAX_PATH]>, но в векторе не может быть тип массива. Тогда я сделал структуру с единственным полем типа wchar_t name[MAX_PATH] и сделал vector<"имя структуры">, но при попытке записать данные в структуру мне прога сказала что структура ПУСТА и полей в ней НЕТ! а когда я поменял его тип на простой char то всё стало норм, но поскольку у меня есть привязка к Юникоду, то мне нужно преобразовать вчарт в чар (с этим проблема, я нашёл как, но нифига не понял и у меня нифига не получилось) и потом обратно с чар в вчарт (тут такая-же проблема).
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
22.03.2014, 14:52
Во-первых, код можно укоротить
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void Dir(wchar_t root[]);
int GDir = 0, GFile = 0;
int main()
{
    setlocale(LC_ALL, "rus");
    // ========= File or Directory  ============================================= //
    Dir(L"D:\\Programmes\\EasyCleaner");
    printf("%d\n", GFile);
    printf("%d\n", GDir);
    system("pause");
}
void Dir(wchar_t root[])
{
    wchar_t buf[MAX_PATH] = { 0 };
    wchar_t buff[MAX_PATH] = { 0 };
    wchar_t SL[] = L"\\";
    wchar_t ForFind[] = L"*.*";
    wcscat(buf, root);
    wcscat(buf, SL);
    wcscat(buf, ForFind);
    WIN32_FIND_DATA FindFileData;
    int dir = 0, file = 0;
    HANDLE hFind = FindFirstFile(buf, &FindFileData);
    if(hFind != INVALID_HANDLE_VALUE)
    {
        wchar_t DirList[MAX_PATH][MAX_PATH] = { 0 };
        int i = 0;
        do
        {
            if (!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT))
            if (lstrcmp(FindFileData.cFileName, L".") != 0)
            if (lstrcmp(FindFileData.cFileName, L"..") != 0)
            {
                if (hFind == INVALID_HANDLE_VALUE)
                {
                }
                else
                {
                    if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                    {
                        i++;
                        dir++;
                        wcscat(buff, root);
                        wcscat(buff, SL);
                        wcscat(buff, FindFileData.cFileName);
                        Dir(buff);
                        memset(buff, 0, sizeof(buff));
                    }
                    else
                    {
                        file++;
                    }
                }
            }
        }
        while(FindNextFile(hFind, &FindFileData));
        GFile += file;
        GDir += dir;
        FindClose(hFind);
    }
}
Во-вторых, в нём есть проблема! При очень большом количестве файлов и/или папок прога вылетает из-за переполнения стека!
Например если в папке 187 вложенных файлов и 6 папок то всё ок, а если файлов 28654 а папок 3111 то уже вылет!

Добавлено через 55 секунд
Помогите исправить проблему с переполнением стека, на ограничение можно забить, я просто поставлю его например 1000000
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.03.2014, 15:52
Цитата Сообщение от qwertun Посмотреть сообщение
Помогите исправить проблему с переполнением стека
Либо не использовать рекурсию, либо уменьшать общий размер
стековых переменных (т.к. на каждом шаге рекурсии на стеке
создаются их копии).
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
22.03.2014, 16:12
Убежденный, да собственно там только одна переменная - путь к папке, уменьшение её размера не к чему хорошему не приведёт, т.к. путь может быть достаточно длинным.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2014, 16:12
Помогаю со студенческими работами здесь

Рекурсивный обход (FindFirstFile, FindNextFile)
Здравствуйте. Перед мной стоит задача выполнить поиск и некоторую работу со всеми файлами в определенном каталоге, количества директорий и...

WIN32 FindFirstFile и FindNextFile возвращают некорректное время
Здравствуйте. При листинге каталога Windows функциями FindFirstFile и FindNextFile таким образом: bool ListLocalDirectory(HANDLE...

FindNextFile
#include &lt;Windows.h&gt; #include &lt;iostream&gt; int main(int argc, TCHAR *argv) { WIN32_FIND_DATA dt; HANDLE handle; handle =...

FindNextFile в do {} while()
Здравствуйте. Хочу перебрать в цикле все файлы и папки в папке. Использую такой код: GetCurrentDirectory(9999, Buffer); //...

Функция FindFirstFile
Нужно получить размер файла с помощью функции FindFirstFile.Но параметры nFileSizeHigh и nFileSizeLow хранятся в неудобном формате....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru