Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];
ВнизУ меня чета никак не получается пробовал чего знал по архивам Найти похожие ветки
← →
Xman (2002-10-22 11:38) [0]У меня чета никак не получается пробовал чего знал по архивам. Еще вчера задал вопрос но не получил стоишего ответа.
Мне нужно получит список файлов находяшегося в архиве, а архив в arj сделан. в командной строке это так делается arj l имя файла >имя файла куда нужно написат информацию например arj l doc.arj >temp.txt в сомандной строке это выполняется но в Делфи никак ни хочет, выдает ошибку Found 1 error(s) немогу сам решит эту задачу. Может поможети Мастера!
А код в делфи такой
WinExec("arj l rustam.arj >temp.txt",SW_SHOW);
или
CreateProcess(pchar("c:\Util\arj.exe"),pchar(arj l rustam.arj >temp.txt),nil,nil,false,0,nil,nil,si,pi);
Я жду помощиииииииииииииии.
← →
MegaBass (2002-10-22 11:52) [1]Я думаю что переадресация не работает и потому надо запускать под >=W2000 CMD.EXE с параметрами "arj l rustam.arj >temp.txt" для ентого подойдет ShellExecute
← →
turusov (2002-10-22 12:08) [2]Используй указывая полные пути и соблюдай (не пропускай) " и проделы)
ShellExecute(handle, Nil, PChar( "c:\drive\arj.exe"), pchar( "l c:\drive\rustam.arj > c:\drive\temp.txt"), Nil, SW_SHOWNORMAL);
← →
turusov (2002-10-22 12:10) [3]У меня D5 и W2000
← →
Xman (2002-10-22 12:56) [4]ShellExecute(handle, Nil, PChar("c:\drive\arj.exe"), pchar("l c:\drive\rustam.arj > c:\drive\temp.txt"), Nil, SW_SHOWNORMAL);
Пробовал он вернул ошибку
Processing archive: c:\drive\rustam.arj
archive created: 2002-10-22 12:08:22, modified: 2002-10-22 12:08:34
0 file(s)
Found 1 error(s)
У меня это в 98 должен работать!
К сожелению не получается....
Еще есть подсказки
← →
Xman (2002-10-22 13:53) [5]Жду ответов с нетерпением
← →
Андрей Прокофьев (2002-10-22 14:17) [6]Попробуйте так:
У меня сработало
ShellExecute(handle, Nil, PChar("C:\COMMAND.COM"),
pchar("/C c:\tools\arj.exe l c:\tools\xxx.arj > c:\tools\temp.txt"), Nil, SW_SHOWNORMAL);
← →
Smithson (2002-10-22 14:54) [7]можно без /C
← →
Андрей Прокофьев (2002-10-22 14:57) [8]
> Smithson © (22.10.02 14:54)
> можно без /C
Попробуйте :))
← →
Xman (2002-10-22 15:00) [9]Обясни как это работает я не понял чото открывается две окошки ДОС в одном работает и пишет в файл а втором собшает ошибку. Я много экспериментировал эту ошибку выдаёт кагда пишеш команду "l" с ">имя файла" то есть куда будет писат содиржимое архива мне без этой части команда l не нужен. Спосиба за ответь!
А ты не знаеш как проше работать с содиржимом архива как его записат в файл?
← →
Андрей Прокофьев (2002-10-22 15:07) [10]Черт с ними, с окошками! Файл-то создается?
У меня все работает, а вот так вообще без окошек
ShellExecute(handle, Nil, PChar("C:\COMMAND.COM"),
pchar("/C c:\tools\arj.exe l c:\tools\xxx.arj > c:\tools\temp.txt"), Nil,
SW_SHOWMINNOACTIVE);
и файл создается.
Какие еще у тебя окошки?
← →
Xman (2002-10-22 15:45) [11]Все получилась.
А как произволно можно дат имия архив файла и имия текст файла и чтобы они были в других местах?
Напремер у меня приходяший почта все в архивах в виде (имя) (0233fd0.098 , (0245hg0.897 и текст сохранялсабы в c:\arxiv\(0233.txt , c:\arxiv\(0245.txt Я сделал вот так
procedure Tarqatish;
Var F: TSearchRec;
FileHandle,mmm,done: integer;
begin
chdir(form2.edWorkDir.Text);
DateTimeToString(d,"dd-mm-yy",date);
done := FindFirst("*.*",faArchive,F);
while done = 0 do
begin
ShellExecute(Application.Handle, Nil, PChar("C:\COMMAND.COM"),pchar("/C c:\pochtash\arj l "+F.Name+" > "+form2.edWorkDir.Text+"kvit\temp.txt"), Nil, SW_SHOWNORMAL);
.......
чета дал ошибку
← →
Smithson (2002-10-22 15:59) [12]
while done = 0 do
Это сильно...
А насчет ошибки. Ты команду эту просто в командной строке введи и увидишь, что при перенаправлении вывода путь должне существовать
← →
Xman (2002-10-22 16:28) [13]В командной строке нармално работает
c:\pochtash\arj.exe l c:\pochta\worktemp\(0452ha0.115 >c:\pochta\worktemp\kvit\temp.txt
← →
Андрей Прокофьев (2002-10-22 16:31) [14]Что за ошибка? (далее непечатно)
Может, слеша нет
begin
ShellExecute(Application.Handle, Nil, PChar("C:\COMMAND.COM"),pchar("/C c:\pochtash\arj l "+F.Name+" > "+form2.edWorkDir.Text+" \kvit\temp.txt"), Nil, SW_SHOWNORMAL);
← →
Xman (2002-10-22 16:49) [15]Слеш есть
← →
Xman (2002-10-23 08:48) [16]Может здесь много переменных?
← →
Sectey (2002-10-23 09:44) [17]Дам дельный совет точнее, просто шикарный</И>.
У меня была подобная проблема с Ha. Класный архиватор на очень хитрый. Как говарится все элементарное просто, ну или почти.
Принцип по которому я сейчас работаю со ВСЕМИ подобными архивами, которые под DOS.
1. Создаеш новый процес.
2. В процесе запускаеш через CreateProcess то, что тебе нужно.
ХИТРОСТЬ:
3. В при создании нового процеса (CreateProcess), есть такие переменные ВХОДНОЙ и ВЫХОДНОЙ поток.
4. Ну вот открываешь свой поток (Файл, память ну что взбредет в голову) обозначаешь его выходным, перед запуском интересующей программы.
5. И вперет и с песней. Дальше дело только за анализом выданной информации.
Так можно работать со всеми консольными архиваторами.
← →
Севостьянов Игорь (2002-10-23 11:27) [18]А может лучше воспользоваться компонентами ?
Я вот использую ZipTV - он разные архиваторы читает - в том числе и arj и HA
Очень удобно...
Начал писать DLL для разархивирования архива независимо от формата - этакий MultyUnArchive
Практически готов:
1. Там затык небольшой - ZipTV for D5 платный - выводит об этом иногда сообщение, не более - не ломал пока еще и
2. ZipTV есть полная версия, но он не понимает при разархивировании arj with encrypt
3. ZipTV 5 не совсем корректно работает с многотомными архивами
4. Завершить работу некогда, т.к. была необходимость в этом на предыдущей работе - сейчас пока нет на это времени
← →
Севостьянов Игорь (2002-10-23 11:29) [19]пункт 2. имелось ввиду для Delphi 4
← →
Yegor Derevenets (2002-10-23 17:09) [20]По хорошему надо брать значение переменной %ComSpec%. Ему говорить "/C Arj <Parameters> > Out_File". Хотя бы потому, что C:\Command.com есть не у всех, да и не всегда есть Command.com (NT - Cmd). Как предлагал Sectey тоже можно, но это сложнее. Если не через Cmd, то ">" и "Out_File" воспринимаются как параметры. У меня тоже когда-то так надо было сделать.
← →
Xman (2002-10-25 13:38) [21]>>Yegor Derevenets (23.10.02 17:09)
>> По хорошему надо брать значение переменной %ComSpec%. Ему >>говорить "/C Arj <Parameters> > Out_File". Хотя бы потому, что >>C:\Command.com есть не у всех, да и не всегда есть Command.com >>(NT - Cmd). Как предлагал Sectey тоже можно, но это сложнее. >>Если не через Cmd, то ">" и "Out_File" воспринимаются как >>параметры. У меня тоже когда-то так надо было сделать.
И в правду у меня это прога должна была работат и в 98 и в 2000 но 2000 в нем нет C:\Command.com . Как можно это исправит7 я для них прседуру отделно написал. но это увиличивает код. Е если ты столкнулса с этим и работал архивами(Arj параметры+ключи) дай какуюта инфу(FAQ,код, статя) напиши на мыло.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.01 c