Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

У меня чета никак не получается пробовал чего знал по архивам [D5, Win95/98]


Страницы:   1 2

Xman ©   (2002-10-22 11:38:00) 

У меня чета никак не получается пробовал чего знал по архивам. Еще вчера задал вопрос но не получил стоишего ответа.
Мне нужно получит список файлов находяшегося в архиве, а архив в 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);
Я жду помощиииииииииииииии.


Xman   (2002-10-25 13:38:00) [1]

>>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,код, статя) напиши на мыло.


Yegor Derevenets   (2002-10-23 17:09:00) [2]

По хорошему надо брать значение переменной %ComSpec%. Ему говорить "/C Arj <Parameters> > Out_File". Хотя бы потому, что C:\Command.com есть не у всех, да и не всегда есть Command.com (NT - Cmd). Как предлагал Sectey тоже можно, но это сложнее. Если не через Cmd, то ">" и "Out_File" воспринимаются как параметры. У меня тоже когда-то так надо было сделать.


Севостьянов Игорь   (2002-10-23 11:29:00) [3]

пункт 2. имелось ввиду для Delphi 4


Севостьянов Игорь   (2002-10-23 11:27:00) [4]

А может лучше воспользоваться компонентами ?
Я вот использую ZipTV - он разные архиваторы читает - в том числе и arj и HA
Очень удобно...
Начал писать DLL для разархивирования архива независимо от формата - этакий MultyUnArchive
Практически готов:
1. Там затык небольшой - ZipTV for D5 платный - выводит об этом иногда сообщение, не более - не ломал пока еще и
2. ZipTV есть полная версия, но он не понимает при разархивировании arj with encrypt
3. ZipTV 5 не совсем корректно работает с многотомными архивами
4. Завершить работу некогда, т.к. была необходимость в этом на предыдущей работе - сейчас пока нет на это времени


Sectey   (2002-10-23 09:44:00) [5]

Дам дельный совет точнее, просто шикарный</И>.
У меня была подобная проблема с Ha. Класный архиватор на очень хитрый. Как говарится все элементарное просто, ну или почти.
Принцип по которому я сейчас работаю со ВСЕМИ подобными архивами, которые под DOS.
1. Создаеш новый процес.
2. В процесе запускаеш через CreateProcess то, что тебе нужно.
ХИТРОСТЬ:
3. В при создании нового процеса (CreateProcess), есть такие переменные ВХОДНОЙ и ВЫХОДНОЙ поток.
4. Ну вот открываешь свой поток (Файл, память ну что взбредет в голову) обозначаешь его выходным, перед запуском интересующей программы.
5. И вперет и с песней. Дальше дело только за анализом выданной информации.
Так можно работать со всеми консольными архиваторами.


Xman   (2002-10-23 08:48:00) [6]

Может здесь много переменных?


Xman   (2002-10-22 16:49:00) [7]

Слеш есть


Андрей Прокофьев   (2002-10-22 16:31:00) [8]

Что за ошибка? (далее непечатно)
Может, слеша нет
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:28:00) [9]

В командной строке нармално работает
c:\pochtash\arj.exe l c:\pochta\worktemp\(0452ha0.115 >c:\pochta\worktemp\kvit\temp.txt


Smithson   (2002-10-22 15:59:00) [10]

while done = 0 doЭто сильно...

А насчет ошибки. Ты команду эту просто в командной строке введи и увидишь, что при перенаправлении вывода путь должне существовать


Xman   (2002-10-22 15:45:00) [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);
.......
чета дал ошибку


Андрей Прокофьев   (2002-10-22 15:07:00) [12]

Черт с ними, с окошками! Файл-то создается?

У меня все работает, а вот так вообще без окошек

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:00:00) [13]

Обясни как это работает я не понял чото открывается две окошки ДОС в одном работает и пишет в файл а втором собшает ошибку. Я много экспериментировал эту ошибку выдаёт кагда пишеш команду "l" с ">имя файла" то есть куда будет писат содиржимое архива мне без этой части команда l не нужен. Спосиба за ответь!
А ты не знаеш как проше работать с содиржимом архива как его записат в файл?


Андрей Прокофьев   (2002-10-22 14:57:00) [14]


> Smithson © (22.10.02 14:54)
> можно без /C

Попробуйте :))


Smithson   (2002-10-22 14:54:00) [15]

можно без /C


Андрей Прокофьев   (2002-10-22 14:17:00) [16]

Попробуйте так:
У меня сработало
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);


Xman   (2002-10-22 13:53:00) [17]

Жду ответов с нетерпением


Xman   (2002-10-22 12:56:00) [18]

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 должен работать!
К сожелению не получается....
Еще есть подсказки


turusov   (2002-10-22 12:10:00) [19]

У меня D5 и W2000


turusov   (2002-10-22 12:08:00) [20]

Используй указывая полные пути и соблюдай (не пропускай) " и проделы)
ShellExecute(handle, Nil, PChar( "c:\drive\arj.exe"), pchar( "l c:\drive\rustam.arj > c:\drive\temp.txt"), Nil, SW_SHOWNORMAL);


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо