Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема BinaryData (число прочтений - 2013 )
U_zer
Экс-Участник


BinaryData
07. Декабря 2007 :: 13:58
Печать  
Всем привет!

Че-то не пойму как использовать
BD.Unzip? Ругается на неверную ком. строку архиватору. Как надо правильно?

ЗЫ: Доку читал, не помогло.  Улыбка
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: BinaryData
Ответ #1 - 07. Декабря 2007 :: 15:00
Печать  
BinaryData = СоздатьОбъект("BinaryData");
BinaryData.UnZip(ИмяФайла);


Что тут непонятного? Улыбка
  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: BinaryData
Ответ #2 - 08. Декабря 2007 :: 07:27
Печать  
Arta писал(а) 07. Декабря 2007 :: 15:00:
BinaryData = СоздатьОбъект("BinaryData");
BinaryData.UnZip(ИмяФайла);


Что тут непонятного? Улыбка


В доке написано:

Синтаксис: Unzip(Команда)

Параметры:
Команда - тип Строка. Командная строка архиватору. Формат командной строки:

[-s[пароль]] имя_и_путь_архива путь_к_каталогу_назначения

Вот так не работает.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: BinaryData
Ответ #3 - 09. Декабря 2007 :: 06:49
Печать  
Держи может поможет?
Код
Выбрать все
Перем _б;
Перем ИмяФайла Экспорт;
Перем КаталогАрхива Экспорт;
Перем ИмяАрхива Экспорт;
Перем Удалить Экспорт;
Перем Пароль Экспорт;

Функция Сам(Конт) Возврат Конт; КонецФункции

Функция ПарольФайла()
    Если ПустоеЗначение(Пароль)=0 Тогда
	  Возврат "-s"+Пароль+" ";
    Иначе
	  Возврат "";
    КонецЕсли;
КонецФункции    // ПарольФайла

Процедура Запаковать() Экспорт
    Архив=КаталогАрхива+ИмяАрхива;
    ФС.УстТекКаталог(КаталогАрхива);
    ФайлАрхива=Архив+".zip";
    лСтр=""""+ФайлАрхива+"""";
    Если ТипЗначенияСтр(ИмяФайла)="СписокЗначений" Тогда
	  Для н=1 По ИмяФайла.РазмерСписка() Цикл
		лИмяФайла=ИмяФайла.ПолучитьЗначение(н);
		лСтр=лСтр+" """+лИмяФайла+"""";
	  КонецЦикла;
    Иначе
	  лСтр=лСтр+" """+ИмяФайла+"""";
    КонецЕсли;
    Если ТипЗначенияСтр(ИмяФайла)="СписокЗначений" Тогда
	  СтрокаСостояния=ИмяФайла.ВСтрокуСРазделителями();
    Иначе
	  СтрокаСостояния=ИмяФайла;
    КонецЕсли;
    Состояние("Запаковка файлов : "+СтрокаСостояния);
    _б.Zip(ПарольФайла()+лСтр);
    Если Удалить=1 Тогда
	  Если ТипЗначенияСтр(ИмяФайла)="СписокЗначений" Тогда
		Для н=1 По ИмяФайла.РазмерСписка() Цикл
		    лИмя=ИмяФайла.ПолучитьЗначение(н);
		    Если Найти(лИмя,"*")>0 Тогда
			  ИмяТекФайла=ФС.НайтиПервыйФайл(лИмя);
			  ФС.УдалитьФайл(ИмяТекФайла);
			  Пока ПустоеЗначение(ИмяТекФайла)=0 Цикл
				ИмяТекФайла=ФС.НайтиСледующийФайл();
				Если ПустоеЗначение(ИмяТекФайла)=0 Тогда
				    ФС.УдалитьФайл(ИмяТекФайла);
				КонецЕсли;
			  КонецЦикла;
		    Иначе
			  ФС.УдалитьФайл(КаталогАрхива+лИмя);
		    КонецЕсли;
		КонецЦикла;
	  Иначе
		ФС.УдалитьФайл(КаталогАрхива+ИмяФайла);
	  КонецЕсли;
    КонецЕсли;
КонецПроцедуры    // Запаковать

Процедура Распаковать() Экспорт
    ФС.УстТекКаталог(КаталогАрхива);
    Если Найти(ИмяАрхива,"*.zip")>0 Тогда
	  ИмяТекФайла=ФС.НайтиПервыйФайл("*.zip");
	  Если ПустоеЗначение(ИмяТекФайла)=1 Тогда
		Сообщить("По маске нет ни одного архива");
		Возврат;
	  КонецЕсли;
	  лСтр=""""+ИмяТекФайла+"""" """"+КаталогАрхива+"""";
	  Состояние("Распаковка файла "+ИмяТекФайла);
	  _б.UnZip(ПарольФайла()+лСтр);
	  Если Удалить=1 Тогда
		ФС.УдалитьФайл(ИмяТекФайла);
	  КонецЕсли;
	  Пока ПустоеЗначение(ИмяТекФайла)=0 Цикл
		ИмяТекФайла=ФС.НайтиСледующийФайл();
		Если ПустоеЗначение(ИмяТекФайла)=0 Тогда
		    лСтр=""""+ИмяТекФайла+"""" """"+КаталогАрхива+"""";
		    Состояние("Распаковка файла "+ИмяТекФайла);
		    _б.UnZip(ПарольФайла()+лСтр);
		    Если Удалить=1 Тогда
			  ФС.УдалитьФайл(ИмяТекФайла);
		    КонецЕсли;
		КонецЕсли;
	  КонецЦикла;
    Иначе
	  Если ФС.СуществуетФайл(ИмяАрхива)=0 Тогда
		Сообщить("Не найден файл "+ИмяАрхива);
		Возврат;
	  КонецЕсли;
	  лСтр=""""+ИмяАрхива+"""" """"+КаталогАрхива+"""";
	  Состояние("Распаковка файла "+ИмяАрхива);
	  _б.UnZip(ПарольФайла()+лСтр);
	  Если Удалить=1 Тогда
		ФС.УдалитьФайл(ИмяАрхива);
	  КонецЕсли;
    КонецЕсли;
КонецПроцедуры    // Распаковать

Процедура Конструктор()
    _б=Сам(Контекст).ПолучитьБазовыйКласс("BinaryData");
КонецПроцедуры

Процедура Деструктор()
    _б=0;
КонецПроцедуры    // ДеСтруктор
 

  
Наверх
 
IP записан
 
U_zer
Экс-Участник


Re: BinaryData
Ответ #4 - 10. Декабря 2007 :: 07:29
Печать  
Спасибо!

Но в данном случае, заработало так как написал Arta.

С именем каталога работать отказывается. Возможно, это ошибка, возможно, нет ... ХЗ.

Если что, версия 1С++ 2.0.3.8 NB 29.11.2007
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать