return false;

 }

 //Если оба каталога существуют, возвращаем true

 return true;

}

Основной функцией, осуществляющей архивирование файлов, является FilesToArchiv() . В самом начале этой функции с помощью вызова CheckPath() проверяется наличие рабочих каталогов. Если хотя бы один из каталогов не существует, то выполнение FilesToArchiv() прерывается и возвращается значение false:

if (!CheckPath()) return false;

Затем создаются экземпляры объектов FileSystemObject и WshShell:

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

FSO = new ActiveXObject('Scripting. FileSystemObject');

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

WshShell = new ActiveXObject('WScript.Shell');

Имя файла-архива формируется следующим образом:

//Формируем имя файла-архива

SFName=SPref+NowIs()+'.arj';

Архиватор arj.exe мы будем запускать в отдельном командном окне, которое закроется после выполнения этой программы. Для этого мы сформируем командную строку SComLine, с помощью которой запускается вторичная копия командного процессора (путь к командному процессору хранится в переменной среды %COMSPEC%, вторичная копия вызывается с помощью ключа ):

SComLine='%COMSPEC% /с ';

Синтаксис запуска arj.exe для создания архивного файла имеет следующий вид:

arj.exe a Archiv Files

где Archiv — путь к файлу-архиву, Files — имена добавляемых в архив файлов (здесь можно использовать шаблонные символы ? и *). Поэтому мы добавим нужные компоненты к командной строке SComLine:

SComLine+=' arj.exe a '+FSO.BuildPath(SArch, SFName) + ' ';

SComLine+= FSO.BuildPath(SFrom, SMask);

Команды, записанные в SComLine, запускаются с помощью метода Run объекта WshShell; код возврата сохраняется в переменной RetCode:

RetCode = WshShell.Run(SComLine, 1, true);

Равенство нулю переменной RetCode означает, что архивирование выполнено без ошибок — в этом случае функция FilesToArchiv() возвращает true. Если же при выполнении arj.exe возникла ошибка (переменная RetCode не равна нулю), то ее код вносится в сообщение об ошибке (свойство SErrMess):

//Анализируем код возврата для arj.exe

if (0==RetCode)

 //Выполнение arj.exe завершилось без ошибок

 return true;

else {

 //Формируем строку с информацией об ошибке

 SErrMess='Ошибка ARJ.EXE! Код '+RetCode;

 return false;

} 

Полностью содержимое файла DateArc.wsc приведено в листинге 10.4.

Листинг 10.4. СОМ-объект DateArc.WSC (JScript)

<?xml version='1.0' encoding='windows-1251'?>

<component>

 <registration description='DateArc' progid='DateArc.WSC'

  version='1.00'

  classid='{424ac2bc-5732-4dea-be17-0211af99cd79}'>

 <script language='JScript'>

  <![CDATA[

var WshShell;

//Инициализируем константы для диалоговых окон

var vbInformation=64;

function Register() {

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

 WshShell = new ActiveXObject('WScript.Shell');

 WshShell.Popup('Компонент зарегистрирован в системе',0,

  'Компонент для архивирования файлов',vbInformation);

}

function Unregister() {

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

 WshShell = new ActiveXObject('WScript.Shell');

 WshShell.Popup('Компонент удален из системы',0,

  'Компонент для архивирования файлов',vbInformation);

}

   ]]>

  </script>

 </registration>

 <public>

  <property name='SFrom'>

   <get/>

   <put/>

  </property>

  <property name='SArch'>

   <get/>

   <put/>

  </property>

  <property name='SPref'>

   <get/>

   <put/>

  </property>

  <property name='SMask'>

   <get/>

   <put/>

  </property>

  <property name='SErrMess'>

   <get/>

  </property>

  <method name='FilesToArchiv'>

  </method>

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату