Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

Как передать консоли конец цайла (EOF)?   Найти похожие ветки 

 
Slym ©   (2004-02-12 19:04) [0]

По документации RAR имена архивируемых файлов может получать через StdIn...(rar a a.rar @) файл, перевод строки, файл перевод строки, конец файла... :

var
 sa:TSecurityAttributes;
 sd:TSecurityDescriptor;
 si:TStartupInfo;
 pi:TProcessInformation;
 INWPipe,INRPipe:THandle;
begin
 CmdLine:="rar a a.rar @";
 sa.nLength:=SizeOf(TSecurityAttributes);
 sa.lpSecurityDescriptor:=NIL;
 sa.bInheritHandle:=true;

 if CreatePipe(INRPipe,INWPipe,@sa,0) then
 try
   FillChar(si,SizeOf(si),#0);
   si.cb:=Sizeof(si);
   si.wShowWindow:=SW_HIDE;
   si.dwFlags:=STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
   si.hStdInput:=INRPipe;
   if CreateProcess(nil,PChar(CmdLine),nil,nil,TRUE,0,nil,nil,si,pi) then
   begin
     CloseHandle(INRPipe);
     WriteFile(INWPipe,a,Length(a),Writed,nil);
     CloseHandle(INWPipe);//Что закрытие пайпа, что посылка #26#13#10 (eof) один хрен! не пашет!
     if WaitForSingleObject(pi.hProcess,INFINITE)=WAIT_OBJECT_0 then
       GetExitCodeProcess(pi.hProcess,res)
     else res:=2;
     CloseHandle(pi.hProcess);
   end else Abort;
 except
     CloseHandle(INRPipe);
     CloseHandle(INWPipe);
 end;


Дык этот код не работает... Рар чего-то ждет...
Пробовал типа "Copy con c:\1.txt" тоже не пашет...


 
Slym ©   (2004-02-16 04:56) [1]

А данная прога вместо RAR работает... понимает и закрытие пайпа и #26#13#10 :
program Project2;

{$APPTYPE CONSOLE}
uses windows;

var a:array[0..1023] of char;
h:dword;
i:dword;
f:dword;
begin
 h:=GetStdHandle(STD_INPUT_HANDLE);
 ReadFile(h,a,1024,i,nil);
 f:=CreateFile("c:\test.txt",GENERIC_READ or GENERIC_WRITE,0,nil,CREATE_ALWAYS,0,0);
 WriteFile(f,a,i,i,nil);
 CloseHandle(f);
end.

Как рару сообщить что ввод закончен?


 
Polevi ©   (2004-02-16 10:46) [2]

ипользуя данный FAQ
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=1057316445&n=15
я создал архив вызовом
AddCommand("rar a z.rar unit1.pas unit1.dfm");


 
Slym ©   (2004-02-17 04:51) [3]

Я тоже создал...
AddCommand("rar a z.rar unit1.pas unit1.dfm");

Но (читай первый пост), "rar a z.rar @" - означает:
Rar получает имена не через Коммандную строку, а запрашивает их из STDIN (readln делает!), команда завершения ввода - конец файла (#26). прекращает запросы и приступает к архивированию.
Т.е. должно быть примерно так:
AddCommand("rar a z.rar @");
AddCommand("unit1.pas");
AddCommand("unit1.dfm");
AddCommand(#26);

Но не работает...


 
Slym ©   (2004-02-17 05:01) [4]

Забираю свой последний пост...
Оказалось после закрытия программы архив всеже создавался!!!
Судя по всему после закрытия пайпов... всеже срабатывает "Конец файла"


 
Slym ©   (2004-02-17 06:43) [5]

Так и есть закрываю пайп для записи в StdIn и Rar начинает паковать!
Тема закрыта!


 
Polevi ©   (2004-02-17 09:37) [6]

>Slym ©   (17.02.04 06:43) [5]
извини, но мне любопытно, в каких случаях нельзя сразу список файлов в командную строку передать ?



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.033 c
4-1074765750
Vova_2004
2004-01-22 13:02
2004.04.18
прозрачный Static


1-1080643180
-kiril
2004-03-30 14:39
2004.04.18
SelectDirectory


3-1079879579
AndreyL
2004-03-21 17:32
2004.04.18
Kak soranit svoju shirinu kolonki DBGrida (posle nastrojki)!


1-1080802405
Draught
2004-04-01 10:53
2004.04.18
TreeView


4-1076677030
Chery
2004-02-13 15:57
2004.04.18
Как запустить одно приложение из другого? (да, ламерство...)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский