Шаг 140.
Microsoft Visual C++ 2010. Начала.
Программа "Экзаменатор". Доступ к файлу теста

    На этом шаге мы рассмотрим организацию чтения данных из файла теста.

    Для того чтобы программа "Экзаменатор" была действительно универсальной, у пользователя должна быть возможность задать имя файла теста.

    Обеспечить возможность настройки программы на работу с конкретным файлом можно несколькими способами. Например, программа может считать имя файла теста из файла конфигурации или получить его из командной строки ее запуска.

    Командная строка — это команда (строка), которую пользователь должен набрать в окне Запуск программы, для того чтобы запустить программу. В простейшем случае командная строка — это имя exe-файла. В командной строке после имени exe-файла можно указать дополнительную информацию, которую надо передать программе, например имя файла, с которым должна работать программа.

    Параметры, указанные пользователем при запуске программы, передаются функции main. Для того чтобы функция main могла получить параметры командной строки, ее объявление должно выглядеть так:

  int main(array<System::String ^> ^args)

    Как видно из объявления, параметр args — указатель на строковый массив, элементы которого и содержат параметры командной строки.

    Функция main программы "Экзаменатор" (она находится в файле Examen.cpp) приведена ниже.

// Examen.cpp: главный файл проекта.

#include "stdafx.h"
#include "Form1.h"

using namespace Examen;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
	// Включение визуальных эффектов Windows XP 
        // до создания каких-либо элементов управления
	Application::EnableVisualStyles();
	Application::SetCompatibleTextRenderingDefault(false); 

	String^ fpath; 
	String^ fname; 
	// проверим, указано ли имя файла теста 
	if (args->Length > 0) 
	{
		// указано только имя файла теста 
		if (args[0]->IndexOf(":") == -1) 
		{
			fpath = Application::StartupPath + "\\"; 
			fname = args[0]; 
		}
		else 
		{
			// указано полное имя файла теста 
			fpath = args[0]->Substring(0,args[0]->LastIndexOf("\\")+1); 
			fname = args[0]->Substring(args[0]->LastIndexOf("\\")+1); 
		}
		// проверим, существует ли указанный файл 
		if (System::IO::FileInfo 
			(fpath->ToString() +fname->ToString()).Exists) 
		{
			// Создание главного окна и его запуск 
			Application::Run(gcnew Form1(fpath,fname)); 
			return 0; 
		}
		else 
		{
			MessageBox::Show( 
				"Неправильно указано имя файла теста \n"+ 
				"(нет папки или файла в указанной папке).\n" + 
				fpath->ToString() + fname->ToString(), 
				"Экзаменатор", 
				MessageBoxButtons::OK, 
				MessageBoxIcon::Stop); 
			return -1; 
		}
	}
	else 
	{
		MessageBox::Show( 
			"Файл теста необходимо указать " + 
			"в команде запуска программы.\n" + 
			"Например: 'exam economics.xml' " + 
			"или 'exam c:\\spb.xml'.", 
			"Экзаменатор", 
			MessageBoxButtons::OK, 
			MessageBoxIcon::Stop); 
		return -1; 
	}
}

    Как было сказано ранее, если программе нужны параметры, то они указываются в команде ее запуска после имени exe-файла. При запуске программы из среды разработки параметры нужно ввести в поле Command Arguments (Аргументы команды) раздела Configuration Properties | Debugging (Свойства конфигурации | Отладка) окна Property Pages (Страницы свойств) (рисунок 1), которое становится доступным в результате выбора в меню Project (Проект) команды Properties (Свойства).


Рис.1. Параметры командной строки в поле Command Arguments (Аргументы команды)

    На следующем шаге мы приведем текст программы.




Предыдущий шаг Содержание Следующий шаг