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)
:
Поделиться:
Популярные книги
Кремлевские звезды
6. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Охота на эмиссара
1. Федерация Объединённых Миров
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Меняя маски
1. Унесенный ветром
Фантастика:
боевая фантастика
попаданцы
9.22
рейтинг книги
Возрождение Феникса. Том 2
2. Возрождение Феникса
Фантастика:
фэнтези
попаданцы
альтернативная история
6.92
рейтинг книги
Возвышение Меркурия. Книга 8
8. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Бальмануг. Студентка
2. Мир Десяти
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Аватар
6. Real-Rpg
Фантастика:
боевая фантастика
5.33
рейтинг книги
Паладин из прошлого тысячелетия
1. Соприкосновение миров
Фантастика:
боевая фантастика
попаданцы
6.25
рейтинг книги
Последний попаданец
1. Последний попаданец
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Сила рода. Том 3
2. Претендент
Фантастика:
фэнтези
боевая фантастика
6.17
рейтинг книги
Para bellum
4. Фрунзе
Фантастика:
попаданцы
альтернативная история
6.60
рейтинг книги
Вечная Война. Книга VIII
8. Вечная Война
Фантастика:
боевая фантастика
юмористическая фантастика
космическая фантастика
7.09
рейтинг книги
Скрываясь в тени
2. Теневой путь
Фантастика:
боевая фантастика
7.84
рейтинг книги
Я же бать, или Как найти мать
Любовные романы:
современные любовные романы
6.44