Чтение онлайн

на главную - закладки

Жанры

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

Рис. 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)
:

Поделиться:
Популярные книги

Сирота

Ланцов Михаил Алексеевич
1. Помещик
Фантастика:
альтернативная история
5.71
рейтинг книги
Сирота

Переиграть войну! Пенталогия

Рыбаков Артем Олегович
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Переиграть войну! Пенталогия

Князь Андер Арес 2

Грехов Тимофей
2. Андер Арес
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Князь Андер Арес 2

Воронцов. Перезагрузка. Книга 4

Тарасов Ник
4. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
6.00
рейтинг книги
Воронцов. Перезагрузка. Книга 4

На границе империй. Том 10. Часть 8

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 8

Барон ломает правила

Ренгач Евгений
11. Закон сильного
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Барон ломает правила

Камень. Книга 3

Минин Станислав
3. Камень
Фантастика:
фэнтези
боевая фантастика
8.58
рейтинг книги
Камень. Книга 3

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Последний Паладин. Том 9

Саваровский Роман
9. Путь Паладина
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Последний Паладин. Том 9

Черный Маг Императора 19

Герда Александр
19. Черный маг императора
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Черный Маг Императора 19

Локки 6. Потомок бога

Решетов Евгений Валерьевич
6. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Локки 6. Потомок бога

Последний Герой. Том 2

Дамиров Рафаэль
2. Последний герой
Фантастика:
попаданцы
альтернативная история
4.50
рейтинг книги
Последний Герой. Том 2

Второгодка. Книга 5. Презренный металл

Ромов Дмитрий
5. Второгодка
Фантастика:
городское фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Второгодка. Книга 5. Презренный металл

Сильнейший Столп Империи. Книга 5

Ермоленков Алексей
5. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 5