вторник, 31 августа 2010 г.

Разработка приложения поиска строк с заданной маской

Введение

В этой статье я хочу вам предложить задание для начинающих изачать C#. Задание не сложное, но отнеситесь к нему серъёзно. Не забывайте комментировать свой код.,

Немного теории

Создание решения в Visual Sudio .NET:

Пример программы представляет из себя отдельный проект. В Visual Sudio .NET проекты обычно группируются в решения. Для создания нового проекта выберите в меню File|New| Project. В диалоговом окне New Project выберите:

  • Project Types: Visual C# Projects;
  • Templates: Windows Application или Console Application;
  • Name: имя решения;
  • Location: его местоположение на диске.

Cтруктура простейшей программы на C#:

using <ИспользуемоеПространствоИмён1>;

// ...

using <ИспользуемоеПространствоИмёнN>;

namespace <ИмяПространстваИмён>

{

public class <ИмяКласса>

{

// Список переменных

// Методов

// и т.д...

// Конструктор класса

public <ИмяКласса1>()

{

}

static void Main()

{

}

}

public class <ИмяКлассаN>

{

// ...

}

}

Варианты

1. Консольное приложение

Написать приложение, которое будет искать в файлах с заданной маской в заданном каталоге указаную строку.

Требования:

1. Возможность задачи параметров через командную строку.

2. Результаты: имя файла, № строки, содержимое строки с совпадением.

3. Результаты должны выводиться на консоль.

2. Графическое приложение (Windows Forms)

Написать приложение с графическим интерфейсом (Windows.Forms), которое

будет искать в файлах с заданной маской в заданном каталоге указаную строку.

Требования:

1. Возможность задачи параметров через командную строку.

2. Результаты: имя файла, № строки, содержимое строки с совпадением.

3. Результаты должны выводиться в многострочный TextBox.

3. Графическое приложение с дополнительными функциями

Написать приложение с графическим интерфейсом (Windows.Forms), которое

будет искать в файлах с заданной маской в заданном каталоге указанные

строки (аналогично grep в UNIX).

Требования:

1. Локализация формы: по умолчанию - английская, при возможности - русская.

2. Возможность задачи параметров через командную строку.

3. Результаты: имя файла, № строки, содержимое строки с совпадением.

4. Результаты должны выводиться в многострочный TextBox.

5. Применение текущей темы Windows XP.

Полный разбор варианта №1

using System;

using System.IO;

namespace Lab2CSharp_L1

{

class FindFiles

{

private static void FindFile(string findLine, string mask, string

dirName)

{

string[] filesName; // = new string[1];

try

{

filesName = Directory.GetFiles(dirName, (mask.Trim() == "") ?

("*.*") : (mask.Trim()));

}

catch (Exception e)

{

Console.WriteLine("Error: The file could not be read: " +

e.Message);

return;

}

foreach(string oneFileName in filesName)

{

if(findLine.Trim() == "")

{

Console.WriteLine(oneFileName + " \n");

}

else

{

try

{

using (StreamReader sr = new

StreamReader(oneFileName))

{

String line;

long Num = 1;

while ((line = sr.ReadLine()) != null)

{

Console.WriteLine(oneFileName + ",

Line(" + Num + "): \"" + line + "\" \n");

Num++;

}

sr.Close();

}

}

catch (Exception e)

{

Console.WriteLine("Error: The file could not be

read: " + e.Message);

return;

}

}

}

}

[STAThread]

static void Main(string[] args)

{

if(args.Length == 3)

{

FindFile(args[2], args[1], args[0]);

}

else if(args.Length == 0)

{

string findLine;

string mask;

string dirName = "";

Console.WriteLine("Поиск в файлах с заданной маской в

заданном каталоге указанной строки.");

do{

Console.WriteLine("\nВведите путь поиска: ");

dirName = Console.ReadLine();

}while(dirName == "");

Console.WriteLine("\nВведите искомую строку: ");

findLine = Console.ReadLine();

Console.WriteLine("\nВведите маску поиска: ");

mask = Console.ReadLine();

FindFile(findLine, mask, dirName);

Console.Read();

}

else

{

Console.WriteLine("FORMAT: ProgName Path Mask FindWhat");

}

Console.Read();

}

}

}

Попробуйте сначала решить задание сами и не смотреть на моё, или можете для примера рассмотреть первый вариант, а потом второй и третий решить сами.

Комментариев нет:

Отправить комментарий