Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / архивация / 23 сообщений из 23, страница 1 из 1
15.12.2004, 13:31
    #32828386
_новичек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
2 вопроса
использую архивирование
WinRar.exe с помощью
Declare Integer ShellExecute In SHELL32
1)Как загнать в массив инфоомацию
о файлах, которые лежат в архиве rar в массив,
чтоб потом показать в листбоксе.
никак не могу найти в хелпе рара
как это сделать???

2) перед архивацией создаю массив
файлов, необходимых для архивации
надо архивировать "пофайлово"
tcOutputFile="Myrar.rar"
for i=1 to alen(Myadir,1)
lcArgument = " a -m3 -ep1 -r -- " + tcOutputFile + " " + Myadir[1,i]
thisform.rar1._myRun("WinRAR.exe",lcArgument) && архивация (или дублирование)
цикл не ждет пока архиватор
заархивирует первый файл из массива в архив
и пытается по новой открыть tcOutputFile
для архивации второго файла.
На что и получаем ошибку архиватора. что он не может открыть
tcOutputFile
как это побороть
МАски файлов, архивирование дирректории не предлагать

Данке щен
...
Рейтинг: 0 / 0
15.12.2004, 13:39
    #32828408
архивация
1) rar lb archive.rar > archive.txt
получишь список файлов в текстовом файле, а дальше - читай куда хошь
2) поищи по форуму как запускать внешние приложения и дожидаться их завершения
...
Рейтинг: 0 / 0
15.12.2004, 13:41
    #32828412
архивация
1) rar lb archive.rar > archive.txt
получишь список файлов в текстовом файле, а дальше - читай куда хошь
2) поищи по форуму как запускать внешние приложения и дожидаться их завершения
...
Рейтинг: 0 / 0
15.12.2004, 14:01
    #32828478
_новичек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
Спасибо за помощь Дмитрий,
но ясности .NULL. :-)))
>rar lb archive.rar > archive.txt
Вот убейте не пойму
Не вижу в хелпе рара таких ключей и команд
можно поподробнее
Я вобщето сам искал пытался прежде чем спросить
doevents не помогает
Это про второй вопрос
...
Рейтинг: 0 / 0
15.12.2004, 14:06
    #32828504
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
Возможно Дмитрий допустил очепятку.
Есть команда RAR LT или RAR VT - подробный список файлов
...
Рейтинг: 0 / 0
15.12.2004, 14:14
    #32828530
архивация
у меня RAR 3.40 там такие ключи есть
...
Рейтинг: 0 / 0
15.12.2004, 14:18
    #32828547
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
2 Дмитрий Маликов

Я писал о 2.71. Скорее всего LB это продолжение LT.
LT дает подробный список файлов со всей инфой о них,
а LB скорее всего List Briff
...
Рейтинг: 0 / 0
15.12.2004, 14:20
    #32828556
архивация
в принципе можно использовать просто rar l archive.rar > archive.txt и разобрать этот список, не очень он и сложный
...
Рейтинг: 0 / 0
15.12.2004, 14:22
    #32828567
Guest?
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
3 версия обе ключи имеются
...
Рейтинг: 0 / 0
15.12.2004, 14:32
    #32828591
_новичек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
Да е мое нет у меня таких команд в хелпе рара
3.11 версия
посмотрел более свежий хелп-разберусь,
Но тока там чего не написано что в файл
rar LT archive.rar > archive.txt
Ладно поразбираемся
А вот по вттрому вопросу неужели нет ничего изящнее
чем FindWindow
Это ведь опять процесс запускать
время лишнее.......
...
Рейтинг: 0 / 0
15.12.2004, 14:38
    #32828612
архивация
...
Рейтинг: 0 / 0
15.12.2004, 14:58
    #32828656
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
2 _новичек

Каких ключей ты не видешь.
Если ты думаешь что "> archive.txt" это ключ, то - нет, это системное перенаправление вывода информации, в данном случае в файл, который потом и анализируешь.
...
Рейтинг: 0 / 0
15.12.2004, 15:00
    #32828661
_новичек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
хе хе
смотрите
1)
tcFileName1=GETFILE()
lcArgument = " -v -- " + tcFileName1
thisform.rar1._myRun("WinRAR.exe",lcArgument)
Рар выводит свое окно просмотра
Нам это нафиг не надо
2)
tcFileName1=GETFILE()
lcArgument = " -v -- " + tcFileName1+" > eee.txt "
thisform.rar1._myRun("WinRAR.exe",lcArgument)
Вариант с любым синтаксисом не прокатывает!!!!!
...
Рейтинг: 0 / 0
15.12.2004, 15:15
    #32828698
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
Зачем -v, это КЛЮЧ и у него другое назначение "Создавать архивные тома с автоопределением размера" (чтобы отличить ключь от одноименной команды перед ним ставится дефис).

Тебе нужна КОМАНДА v, т.е.

rar v MyArchive.rar > archive.txt
...
Рейтинг: 0 / 0
15.12.2004, 15:25
    #32828727
_новичек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
Да насчет ключа и команды тут я конечно бездарно облажался
Может у меня рар дурной, или руки из...
попробуйте выполнить из командной строки
меню пуск такую команду
winrar.exe v c:\test.rar
winrar.exe vt c:\test.rar
У меня пишет неизвестная команда "V"
архив c:\test.rar конечно есть

Тоже самое
из фокса
tcFileName1=GETFILE()
lcArgument = "v" + tcFileName1 + " > eee.lst "
MESSAGEBOX(lcArgument)
thisform.rar1._myRun("WinRAR.exe",lcArgument)
...
Рейтинг: 0 / 0
15.12.2004, 15:28
    #32828740
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
У меня на машине не стоит WinRar, только если дома проверить :)
Ну а по winrar l archivename что говорит?
...
Рейтинг: 0 / 0
15.12.2004, 15:35
    #32828766
_новичек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
На команду L или l
тоже говорит
"Неизвестная команда "L" "
Странно, а ведь на
tcFileName1=GETFILE()
lcArgument = " -v -- " + tcFileName1+" > eee.txt "
thisform.rar1._myRun("WinRAR.exe",lcArgument)
рар мне показывает содержимое архива,
и не создает "многотомный архив"
Нифигушеньки не понимаю
...
Рейтинг: 0 / 0
15.12.2004, 16:56
    #32828979
_новичек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
И кстати про завершение приложения
странно но почему то такой код не работает,
хотя по идее все должно быть нормально
ишет что не может получить доступ к файлу-архиву
DECLARE INTeger FindWindow IN Win32API string, string
thisform.rar1.xdir('c:\base\dbfs\ ','*.*') && массив ADIR
tcOutputFile='4444.rar'
FOR i=1 TO ALEN(thisform.rar1.axdir,1)
lcArgument = " a -m3 -ep1-- " + tcOutputFile + " " +FULLPATH(thisform.rar1.axdir[i,1])
thisform.rar1._myRun("WinRAR.exe",lcArgument) && архивация (или дублирование)
Do While findwindow(Null,'WinRAR')=0
LOOP
ENDDO
IF i=ALEN(thisform.rar1.axdir,1)
EXIT
ENDIF
ENDFOR

Библиотеку TOLLS.DLL цеплять не хочется
...
Рейтинг: 0 / 0
18.12.2004, 23:54
    #32833580
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
Hi _новичек!

1) Пользуй не WINrar - а идущий с ним в комплекте консольный rar.exe - я не
уверен, но вполне возможно что у winrar.exe и ключи другие, и работает он
иначе. пакуют и распаковывают они одинаково
2) Для запуска с ожиданием нужно не решение с FindWindow, а решение с
CreateProcess искать!
3) rar умеет брать список файлов для упаковки из простого текстового файла -
запиши туда все нужные тебе имена (и возможно относительные пути) и
подсовывай rar-у этот файл.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
19.12.2004, 10:30
    #32833679
_новичек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
спасибо за помощь,
все правильн,
винрар не знает эти ключи
Эти ключи знает консоль rar.exe
вариант с текстовым файлом-списком файлов для архивации проходит

Ни как не могу перенаправить вывод
файлов в архиве в текстовый файл,
"C:\Program Files\RAR\Rar.exe" vt test >bambam.lst
в сеансе DOS такая команда работает на ура,
и никакими winExec, shell32, tolls32.dll и прочими апишными
"запускателями файлов" не могу перенаправить вывод в файл
Чем можете помочь
...
Рейтинг: 0 / 0
19.12.2004, 21:36
    #32833909
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
Hi _новичек!

У меня работает.
Код: plaintext
1.
2.
DECLARE INTEGER ShellExecute IN SHELL32.DLL ;
 INTEGER, STRING, STRING, STRING, STRING, INTEGER
? ShellExecute( 0 , "Open", "rar", '/h > C:\rarhelp.txt', "C:\",  1 )


Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
20.12.2004, 18:37
    #32835736
_новичек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
Спасибо Игорь за помощь
Но в 98 виндовсе не работает
и сохраняется
winExec, shell32, tolls32.dll и прочими апишными
"запускателями файлов" не могу перенаправить вывод в файл
уж оступиться чтоли.....
...
Рейтинг: 0 / 0
11.01.2005, 16:09
    #32859556
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
архивация
Как всегда читать тему неохота...

2 взгляда на решение траблы.

1) Использовать класс для перехвата потоков ввода/вывода (http://www.foxclub.ru/sol/index.php?act=view&id=373)

2) Взять библиотеку для работы с файлами RAR/ZIP и юзать ее.
(http://www.foxclub.ru/sol/index.php?act=view&id=363)

Удачи. :-)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / архивация / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]