4 / 4 / 4
Регистрация: 29.11.2014
Сообщений: 131
1

Проверить директорию на существование - работа с компьютерами в сети

09.12.2017, 01:10. Показов 532. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Такая ситуация. Мне нужно проверить путь(директорию) на существование. Объясню: у меня есть функция, которая возвращает список дисков и компьютеров в сети в переменной типа vector<wstring>. Мне нужно проверить возвращаемые данные на существование.
Вы спросите - "А зачем? Функция же не ошибается". Отвечу: дело все в том, что бывают устройства, которые нужно отфильтровать(см вложение 2). На C# это делалось очень легко, как это сделать на C++ - я немного туплю. Помогите разобраться.

Содержание main:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Scanner SystemScan;
int main(void)
{
    for (const auto &el : SystemScan.get_names())
    {
        std::wstring disk{ el };
        if (el.find(':') != 1 && el.find('\\') != 2)
        {
            disk = L"\\\\" + disk + L"\\";
        }
        bool de = SystemScan.isDirectoryExists(&disk);
        std::wcout << disk << "    " << de << '\n';
    }
_getch();
return 0;
}
Метод проверки директории на существование:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    std::string ws2s(const std::wstring& wstr)
    {
        int size_needed = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), int(wstr.length() + 1), 0, 0, 0, 0);
        std::string strTo(size_needed, 0);
        WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), int(wstr.length() + 1), &strTo[0], size_needed, 0, 0);
        return strTo;
    }
 
    bool isDirectoryExists(std::wstring *filename)
    {
        const std::string str = ws2s(*filename);
        DWORD dwFileAttributes = GetFileAttributes(str.c_str());
        if (dwFileAttributes == 0xFFFFFFFF)
            return false;
        return dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
    }
И на одном из компьютеров все отрабатывает нормально(см вложение 3), а на втором - отбрасывает вообще все компьютеры в сетевом окружении(см вложение 1)


Проверить директорию на существование - работа с компьютерами в сети


Проверить директорию на существование - работа с компьютерами в сети


Название: 2017-12-09_010519.png
Просмотров: 32

Размер: 1.3 Кб
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2017, 01:10
Ответы с готовыми решениями:

Проверить существование файла. Проверить содержание ячейки
Уважаемые программисты я только начинаю тернистый путь, так что извините если вопросы не корректны....

настройка сети между компьютерами
ребята помогите настроить сеть между компьютером и ноутбуком и настроить выход в интернет с...

Связь между компьютерами по сети
Подскажите можно ли в VBA работать с портами компьютера, подключенного к ЛВС Если для этого нужен...

Нету сети между компьютерами
Добрый день и сразу к делу. Первый ПК подключен кабелем к TD-W8951ND, второй ПК подключен по...

5
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
09.12.2017, 08:27 2
Лишнее преобразование убери для начала. И в find() добавь L.
C++
1
DWORD dwFileAttributes = GetFileAttributesW(filename->c_str());
0
4 / 4 / 4
Регистрация: 29.11.2014
Сообщений: 131
15.12.2017, 17:28  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Лишнее преобразование убери для начала. И в find() добавь L.
C++
1
DWORD dwFileAttributes = GetFileAttributesW(filename->c_str());
К сожалению, это не помогает решить проблему(
0
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
15.12.2017, 20:25 4
Сетевые ресурсы везде ноль. В чём разница?
0
4 / 4 / 4
Регистрация: 29.11.2014
Сообщений: 131
15.12.2017, 21:24  [ТС] 5
Цитата Сообщение от nmcf Посмотреть сообщение
Сетевые ресурсы везде ноль. В чём разница?
В смысле? Часть сетевых ресурсов доступны как директории:
Проверить директорию на существование - работа с компьютерами в сети




А часть нет:
Проверить директорию на существование - работа с компьютерами в сети
0
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
16.12.2017, 07:09 6
Ты написал не понятно. Я подумал, что где-то на сетевом ресурсе есть единица, а у тебя везде и всегда нули. Почему ты считаешь, что GetFileAttributes() подходит? Что именно возвращается и что GetLastError() показывает?
0
16.12.2017, 07:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2017, 07:09
Помогаю со студенческими работами здесь

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

Установка беспроводной сети между компьютерами
Добрый день. Имеется стационарный компьютер и ноутбук. У ноутбука встроенный wi-fi. На стационарном...

Не играют игры по локальной сети с 2-мя компьютерами
Добрый день! Есть компьютер, есть ноутбук у обоих windows 7 64 bit, есть сетевой кабель. Создал я...

Связь меду 2 компьютерами вне локальной сети
Помогите пожалуйста организовать такую связь. У меняесть сайт, в котором я достаю рандомные вопросы...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru