Главная страница
    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.032 c
3-1080099460
Andy 1
2004-03-24 06:37
2004.04.18
Excel


3-1080034605
Yurec66
2004-03-23 12:36
2004.04.18
Вместо DBE использовал ADS


9-1065705568
chuckloon
2003-10-09 17:19
2004.04.18
Посмотрите на мой первый блиняру.


3-1080047576
Aleksandr
2004-03-23 16:12
2004.04.18
Какой командой из триггера MS SQL можно запустить файл?


3-1079811622
Алексей31
2004-03-20 22:40
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский