Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программное обеспечение » Windows Script Host для Windows 2000/XP - Андрей Попов

Windows Script Host для Windows 2000/XP - Андрей Попов

Читать онлайн Windows Script Host для Windows 2000/XP - Андрей Попов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 80 81 82 83 84 85 86 87 88 ... 175
Перейти на страницу:

Рис. 5.14. Содержимое записной книжки (сортировка по фамилии)

Запускной функцией в SortName.js является функция Main():

function Main() {

 //Создаем объект WshShell

В WshShell = WScript.CreateObject("WScript.Shell");

 //Определяем пути к файлам

В InitPath();

 //Создаем объект FileSystemObject

В FSO=WScript.CreateObject("Scripting.FileSystemObject");

 //Открываем выходной файл для записи

В FOut=FSO.OpenTextFile(PathOut,ForWriting,true);

 //Печатаем заголовок отчета

 TopReport("Сортировка по фамилии");

 //Выводим содержимого файла с данными

В ListFile();

 //Печатаем итоговую информацию

В BottomReport();

 //Открываем выходной файл в Блокноте

В MakeOut();

}

Ртак, основная работа РїРѕ формированию выходного файла, который затем будет открыт РІ Блокноте, производится РІ функции ListFile(). Р’ СЃРІРѕСЋ очередь, РІ этой функции вызываются функции FileToArray() Рё ListPersonArray().

function ListFile() {

 //Считывание данных из файла в массив

В FileToArray();

 //Запись информации из массива в выходной файл

В ListPersonArray();

}

Опишем сначала функцию FileToArray(). Здесь производится создание массива PersonArr, чтение в цикле while строк из файла book.txt (с помощью метода ReadLine) и формирование массива ss (с помощью метода split), элементы которого содержат данные для текущей записи. После этого вызывается функция PersonToArray() для создания нового элемента массива PersonArr:

function FileToArray() {

var s,ss;

 //Открываем файл с данными для чтения

В FBook=FSO.OpenTextFile(PathBook,ForReading,true);

 //Создаем массив PersonArr

В PersonArr=new Array();В 

 //Читаем содержимое файла FBook

В while (!FBook.AtEndOfStream) {

  //Считываем строку

В  s=FBook.ReadLine();

  //Записываем содержимое строки s в массив ss

В  ss = s.split("|");

  //Добавляем новый элемент в массив объектов Person

В  PersonToArray(ss);

В }

 //Закрываем файл

В FBook.Close();

}

В функции PersonToArray(sArr) из элементов массива sArr формируется экземпляр PersonRec объекта Person. После этого объект PersonRec добавляется в массив PersonArr:

function PersonToArray(sArr) {

 //Создаем новый объект Person

В PersonRec=new Person(sArr[0], sArr[1], sArr[2], sArr[3], sArr[4], sArr[5], sArr[6]);

 //Сохраняем объект Person в массиве

В PersonArr[PersonArr.length]=PersonRec;

}

Конструктор объекта Person имеет следующий вид:

function Person(LastName,Name,Phone,Street,House,App,Note) {

 this.LastName=LastName; //Фамилия

В this.Name=Name;В В В В В В В В  //РРјСЏ

 this.Phone=Phone;       //Телефон

 this.Street=Street;     //Улица

 this.House=House;       //Дом

 this.App=App;           //Квартира

 this.Note=Note;         //Примечание

}

Перейдем теперь к рассмотрению функции ListPersonArray():

function ListPersonArray() {

var i;

 //Сортировка массива по фамилии

В PersonArr.sort(SortLastName);

 //Цикл по всем элементам массива PersonArr

В for (i=0;i<=PersonArr.length-1;i++) {

  //Запись информации в выходной файл

В  PrintPerson(PersonArr[i]);

В }

}

Сначала здесь производится сортировка массива PersonArr в возрастающем порядке по фамилиям, для чего в качестве параметра метода sort указывается имя SortLastName функции, которая производит сравнение двух элементов массива:

function SortLastName(Pers1,Pers2) {

В if (Pers1.LastName<Pers2.LastName) return -1;

В else if (Pers1.LastName==Pers2.LastName) return 0;

В else return 1;

}

Замечание

Сортировать массивы подобным образом можно только в сценариях JScript, где массивы рассматриваются как объекты. В сценариях VBScript отсутствуют встроенные средства для сортировки массивов

После сортировки массива содержимое его элементов в цикле выводится в файл out.txt с помощью функции PrintPerson(PersRec):

function PrintPerson(PersRec) {

 FOut.WriteLine("Фамилия : "+PersRec.LastName);

В FOut.WriteLine("РРјСЏ : "+PersRec.Name);

 FOut.WriteLine("Телефон: "+PersRec.Phone);

 FOut.WriteLine("Улица: "+PersRec.Street);

 FOut.WriteLine("Дом: "+PersRec.House);

В FOut.WriteLine("РљРІ.: "+PersRec.App);

 FOut.WriteLine("Заметки: "+PersRec.Note);

В FOut.WriteLine("*********************************");

 //Увеличиваем счетчик числа записей

В NomRec++;

}

В листинге 5.21 приводится полный текст сценария SortName.js.

Листинг 5.21. Вывод содержимого записной книжки с сортировкой по фамилии

/*******************************************************************/

/* РРјСЏ: SortName.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В  */

/* Язык: JScript                                                   */

/* Описание: Записная книжка (данные в текстовом файле book.txt).  */

/*           Вывод всех записей с сортировкой по фамилии           */

/*******************************************************************/

//Объявляем переменные

var

В WshShell,FSO,

 BasePath,  //Путь к текущему каталогу

 PathBook,  //Путь к файлу с данными

 PathOut,   //Путь к выходному файлу

 FBook,     //Файл с данными

 FOut,      //Выходной файл

 NomRec=0,  //Счетчик количества записей

 PersonRec, //Объект для хранения данных об одном человеке

 PersonArr; //Массив для хранения объектов PersonRec

//Рнициализируем константы для работы СЃ файлами

varВ 

В ForReading=1,

В ForWriting=2;

//Конструктор объекта Person

function Person(LastName,Name,Phone,Street,House,App,Note) {

 this.LastName=LastName; //Фамилия

В this.Name=Name;В В В В В В В В  //РРјСЏ

1 ... 80 81 82 83 84 85 86 87 88 ... 175
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Windows Script Host для Windows 2000/XP - Андрей Попов.
Комментарии