.
Visual C# для чайников. Урок 7. Усовершенствуем программу DiskInfo (объекты: DriveInfo, StringBuilde
Автор megabax   
15.10.2011 г.
В этой статье я постараюсь максимально просто и понятно изложить основы программирования на языке Delphi

Visual C# для чайников. Урок 7. Усовершенствуем программу DiskInfo (объекты: DriveInfo, StringBuilder, Environment)

 

Усовершенствуем программу, созданную на предыдущем уроке. Пусть она выводит не только информацию текущем диске, а данные по любому диску. Для начала давайте доработаем процедуру DInfo, что бы она могла выдавать сообщение об ошибке, если в параметрах задан некорректный символ диска (диски, у нас, как известно, обозначаются буквами латинского алфавита):

        static void DInfo(string path)

        {

            string none = "---";

            string d = path[0].ToString().ToUpper();

 

            //вывод сообщения об ошибке если некорректная буква диска

            if (d[0] < 'A' || d[0] > 'Z')

            {

                Console.WriteLine(d[0].ToString() + " Неверное обозначение диска");

                return;

            }

 

            //заполняем информацию о диске

            DriveInfo di = new DriveInfo(d);

            StringBuilder s = new StringBuilder(40);

            s.AppendFormat(" {0,-4}",d);

            if (di.DriveType != DriveType.NoRootDirectory)

            {

                s.AppendFormat(" {0,-9}", di.DriveType);

                if (di.IsReady)

                {

                    s.AppendFormat("{0,12:N0} {1,12:N0}", di.TotalSize / 1024, di.TotalFreeSpace / 1024);

                }

                else s.AppendFormat("{0,12} {0,12}", none);

            }

            else s.AppendFormat(" {0,-9}{0,12} {0,12}", none);

            Console.WriteLine(s);

        }

как видим, по сравнению с предыдущим примером у нас добавилось только условие проверки допустимости обозначения диска:

            if (d[0] < 'A' || d[0] > 'Z')

            {

                Console.WriteLine(d[0].ToString() + " Неверное обозначение диска");

                return;

            }

для чего это мы делаем? Дело в том, что если пользователь укажет некорректное имя диска (например, букву русского алфавита или какой нибуль специальный знак, например #), то она страшно ругнется:

Visual C# для чайников. Урок 7. Усовершенствуем программу DiskInfo (объекты: DriveInfo, StringBuilder, Environment)

 Так вот, пусть лучше программа ругаться не страшно :). Например, вот так:

Visual C# для чайников. Урок 7. Усовершенствуем программу DiskInfo (объекты: DriveInfo, StringBuilder, Environment)

Кстати, если без этого условия вы запустите программу из под Visual Studio, то у вас программа вылетит в этом случае в отладчик*:

Visual C# для чайников. Урок 7. Усовершенствуем программу DiskInfo (объекты: DriveInfo, StringBuilder, Environment)

А вот теперь изменим процедуру Main:

        static void Main(string[] args)

        {

            Console.WriteLine("Программа DiskInfo\n");

            Console.WriteLine("   Disk type      size(K)     Free (K)\n");

            Console.WriteLine(new String('=',40));

            if (args.Length == 0)

                DInfo(Environment.CurrentDirectory);

            else

                foreach (string d in args) DInfo(d);

            Console.WriteLine("Press any key to contimue\n");

            Console.ReadLine();

        }

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

Как задавать параметры командной строки? При запуске программы "руками" они идут после имени программы*:

Visual C# для чайников. Урок 7. Усовершенствуем программу DiskInfo (объекты: DriveInfo, StringBuilder, Environment)

если запускаете из Visual Studio, то в меню свойство проекта*:

Visual C# для чайников. Урок 7. Усовершенствуем программу DiskInfo (объекты: DriveInfo, StringBuilder, Environment)

на закладке Debug опция Command line arguments*:

Visual C# для чайников. Урок 7. Усовершенствуем программу DiskInfo (объекты: DriveInfo, StringBuilder, Environment)

И вот результат работы нашей программы:

Visual C# для чайников. Урок 7. Усовершенствуем программу DiskInfo (объекты: DriveInfo, StringBuilder, Environment)

 


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями  программного продукта "Microsoft Visual Studio 2010 Professional", авторское право на который принадлежит корпорации Microsoft.. 


 

 

(С) Шуравин Александр

 

Последнее обновление ( 25.03.2014 г. )