Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для craftersmine
31 / 29 / 9
Регистрация: 06.06.2014
Сообщений: 373

Как исправить ошибку в коде?

05.07.2015, 21:25. Показов 1594. Ответов 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
public static string GetDriveLabel(string letter)
        {
            string label = null;
            DriveInfo[] drives = DriveInfo.GetDrives();
            foreach (DriveInfo drive in drives)
            {
                if (drive.Name.Contains(letter + ":\\"))
                {
                    if (drive.VolumeLabel.Length > 0)
                    {
                        label = drive.VolumeLabel;
                        return label;
                    }
                    else
                    {
                        label = null;
                        return label;
                    }   
                }
                else
                    throw new DiskLetterNotFoundException("Диск с данной буквой не найден!");
            }
            return label;
        }
Если вводишь C в консоль то все норм но если другой диск например D то вылетает исключение. И если нажимаешь Enter без ввода то показывается метка тома C. Как это исправить?

Добавлено через 1 минуту
UPD!

Когда нажимаешь Enter без ввода буквы исправил.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.07.2015, 21:25
Ответы с готовыми решениями:

Как исправить ошибку в коде
В прикрепленном файле скрин ошибки. Вот код. using System; using System.Collections.Generic; using System.ComponentModel; using...

Исправить ошибку в коде
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Исправить ошибку в коде
Вот задание. Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива....

11
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
05.07.2015, 21:34
C#
1
Console.WriteLine((new DriveInfo("g")).VolumeLabel);
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
05.07.2015, 21:37
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static string GetDriveLabel(string letter)
{
    string label = null;
    DriveInfo[] drives = DriveInfo.GetDrives();
    foreach (DriveInfo drive in drives)
    {
 
        if (drive.Name.Contains(letter + ":\\"))
        {
            if (drive.VolumeLabel.Length > 0)
            {
                label = drive.VolumeLabel;
                return label;
            }
            else
            {
                label = null;
                return label;
            }
        }
    }
    throw new Exception("Диск с данной буквой не найден!");
}
Добавлено через 2 минуты
И не помешало бы приводить letter к верхнему регистру.
0
 Аватар для craftersmine
31 / 29 / 9
Регистрация: 06.06.2014
Сообщений: 373
05.07.2015, 21:47  [ТС]
Цитата Сообщение от Даценд Посмотреть сообщение
И не помешало бы приводить letter к верхнему регистру.
Не помогло
Цитата Сообщение от diadiavova Посмотреть сообщение
Console.WriteLine((new DriveInfo("g")).VolumeLabel);
Мне нужен мой метод
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
05.07.2015, 21:49
Цитата Сообщение от craftersmine Посмотреть сообщение
Мне нужен мой метод
Насколько я понял, твой метод не работает и именно в связи с этим вопрос и возник. Или я чего-то не понял?
0
 Аватар для craftersmine
31 / 29 / 9
Регистрация: 06.06.2014
Сообщений: 373
05.07.2015, 21:50  [ТС]
Да но мне нужно сделать так что бы он работал
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
05.07.2015, 21:52
Лучший ответ Сообщение было отмечено craftersmine как решение

Решение

craftersmine,
исправьте код как в первой части моего сообщения, т.е. генерирование исключения выкиньте из цикла.
Иначе, в соответствии с Вашим кодом, если буква первого найденного диска из цикла не совпадает с letter, то генерируется исключение. Обычно (всегда) первая буква диска 'С', поэтому с диском С все работает, до проверки других дисков дело не доходит.
1
 Аватар для craftersmine
31 / 29 / 9
Регистрация: 06.06.2014
Сообщений: 373
05.07.2015, 21:53  [ТС]
Цитата Сообщение от Даценд Посмотреть сообщение
исправьте код как в первой части моего сообщения, т.е. генерирование исключения выкиньте из цикла.
Иначе, в соответствии с Вашим кодом, если буква первого найденного диска из цикла не совпадает с letter, то генерируется исключение. Обычно (всегда) первая буква диска 'С', поэтому с диском С все работает, до проверки других дисков дело не доходит.
Спасибо, помогло
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
05.07.2015, 21:54
И о верхнем регистре не забывайте.
0
 Аватар для craftersmine
31 / 29 / 9
Регистрация: 06.06.2014
Сообщений: 373
05.07.2015, 21:55  [ТС]
Исправил
0
 Аватар для diadiavova
7258 / 2605 / 744
Регистрация: 11.04.2015
Сообщений: 4,148
Записей в блоге: 43
05.07.2015, 22:00
Цитата Сообщение от craftersmine Посмотреть сообщение
Да но мне нужно сделать так что бы он работал
Ну так он и будет работать, если оформить как тебе надо
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        public static string GetDriveLabel(string letter)
        {
            var di = new DriveInfo(letter);
            try
            {
                return di.VolumeLabel;
            }
            catch (DriveNotFoundException ex)
            {
                
                return ex.Message;
            }
        }
Добавлено через 19 секунд
И о регистре можно забыть ))
0
 Аватар для craftersmine
31 / 29 / 9
Регистрация: 06.06.2014
Сообщений: 373
05.07.2015, 22:10  [ТС]
Тоже сойдет

Добавлено через 43 секунды
Но на всякий случай оставлю в коде оба, но один закоментю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.07.2015, 22:10
Помогаю со студенческими работами здесь

Как исправить ошибку в коде "Блокнота"?
Народ как добавить во вкладку Файл-Вкладку Новый в блокнот? private void создатьToolStripMenuItem_Click(object sender, EventArgs e) ...

Исправить ошибку CS0115 в коде
Доброе времени суток. Подскажите пожалуйста программа не хочет работать. Выдает ошибку CS0115.Вот сама программа using System; using...

Нужно исправить ошибку в коде
Пишу программу, вот часть кода: private void button1_Click(object sender, EventArgs e) { double Oklad ; ...

Исправить ошибку в коде: файл не сохраняется
Заходит в последнее условие, но StreamWriter не срабатывает и не сохраняется строка в текстовик. Как исправить? ...

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru