Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 357

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 351 352 353 354 355 356 < 357 > 358 359 360 361 362 363 .. 404 >> Следующая

762__________________________________________________________________Практический пример

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

public void Voce(int «newer) .

(

if (answer ==01! answer > myAnswerCount)

(

throw (new Exception('Invalid choice of answer.'));

! Некорректный выбор ответа./



Чтобы увеличить на единицу число голосов в кэшированной копии, которая хранится в массиве votes, используется оператор ++ с элементом массива:

myVotee[answer]++j

Следующие несколько строк программы идентичны коду, расположенному недалеко от начала конструктора метода poll: в нем проводится считывание XML-файла в объект DataSet:

DataSet щуDataSet ~ new DataSet()j

Filestream fsReadXml •= FileStreamdnyfilename, System.IO>FileMode,Open) j XmlTextReader myXmlReader = new System.Xml.XmlTextReader(fsReadXml); myDataSet.ReadXml myXmlReader); .

myXmlReader.Close О ;

Затем из Dataset извлекается строка с количеством голосов в ответе, номер которого определяется с помощью параметра answer, переданного этому методу. Очень важно быть максимально внимательным при создании данного приложения, поскольку все объекты DataSet индексируются, начиная с нуля, однако здесь для удобства используется нндексы, отсчет которых начинается с единицы. Именно поэтому прн указании строки в DataSet используется выражение “answer-1", которое позволяет перейти от одной системы индексирования к другой.

Напоминаем, что причина, по которой мы используем модификаторы индекса “+1" и и-Г’, заключается в том, что мы хотим, чтобы пользователь класса Poll имел возможность работать с вопросами, которые нумеруются I, 2, 3, ..., а не 0,

1, 2....Хотя такой подход и облегчает жизнь тем, кто будет писать код уровня

представления, он требует несколько большей работы. Этот вариант кода зачастую является источником ошибок, и его тестирование жизненно важно, поскольку обнаружение ошибок в такого рода программах оказывается весьма затруднительным:

string votes = nryDataSet.Toblea[l] .Rows[answer-1] .ItemArray [II .ToStrinsO ;

После получения значения числа голосов оно преобразовывается в целый тип: int voteelnt = int.Parse(votes);

Чтобы изменить значение в ячейке таблицы q наборе данных, следует проникнуть внутрь него и извлечь объект DataRow, который представляет интересующий нас конкретный ответ на опрос. Поскольку индексация происходит внутри набора данных (отсчет с нуля), то индексатор модифицируется посредством добавления к нему "-Г:

DataRow nyVotesRow = my DataSet .Tables [1] .Rows Ianswer-1];
Практический пример 1 - web-сайт для проведения опросов

763

Чтобы изменить значение переменной с количеством голосов, нужно добавить в нес единицу, преобразовать ее в строку и присвоить ее столбцу votes объекта DataRow. После выполнения этой строки в наборе данных будет находиться измененное значение счетчика голосов, поэтому все, что теперь остается сделать,— это записать набор данных обратно в XML-файл.

myVotesRowt'Votes'I = (voteslnt+1) .ToStringO ;

Далее создается объект StreamWriter, в который будут записаны хранящиеся в объекте Dataset данные, и ему передается имя XML-фанла, хранящегося в поле myFilenajne: ¦

StreamWriter myStream * пен StreamWriter (nyFilename);

Чтобы передать A0O.NET информацию о том, что XML-содержимое должно быть включено обратно в файл, нужно обратиться к методу writexmio объекта . DataSet, передавая ему соответствующий поток, а также значение, которое указывает на то, что мы хитим записать XML без использования информации, хранящейся в схеме:

m/DataSet.Writexml(myStream,XmlWriteMode.IgnoreScheme);

В заключение мы закрываем поток и завершаем метод: myStream.Close();

)

Это все, что необходимо, чтобы сохранить измененные данные. .NET позволяет перемещать данные из XML в наборы данных и обратно фантастически просто.

Свойство public int AnswerCount

Свойство AnswerCount возвращает количество ответов в опросе. Оно используется в режиме "только чтенне” и возвращает значение, которое хранится в частном поле щуAnswerCount. Это поле инициализируется исключительно с помощью метода current;), хотя последующие версии класса могут допускать создание экземпляров и работу с этим полем другими способами. Например, если мы захотим создавать новые варианты опроса программным путем, то нам потребуется возможность создавать новый опрос и настраивать число возможных в нем ответов:

' public int AnswerCount

{

set

(

return myAnswerCount;

}

Свойство public string Question

Это свойство полностью идентично свойству AnswerCount за исключением того, что оно возвращает значение поля myQuestion, в котором хранится строка с вопросом, задаваемом при проведении данного опроса:
Предыдущая << 1 .. 351 352 353 354 355 356 < 357 > 358 359 360 361 362 363 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.