Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.11.2009, 15:38
Аватар для r1x
r1x r1x вне форума
Начинающий
 
Регистрация: 15.07.2009
Адрес: KZ, Pavlodar
Сообщения: 110
Репутация: 10
Восклицание WinRAR & delphi

Как программно распоковать файл RAR и открыть его в программе??


Например:
Архив TEST.rar в нем файл file.txt его надо распокавать и открыть в мемо, как это сделать?
__________________
[ iNewStar.Ru ] - Продам!
Вопросы в ПМ
Ответить с цитированием
  #2  
Старый 16.11.2009, 15:41
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,030
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1 вариант. Идешь на torry.ru, качаешь любой понравившийся компонент распаковки RAR'а, ставишь его. При работе распаковываешь во временную папочку и оттуда открываешь.
2 вариант. Пользуемся консольным варианторм RAR'а. Через CreateProcess запускаем распаковку файла, дожидаемся окончания процесса и читаем файл.
Ответить с цитированием
  #3  
Старый 20.11.2009, 01:33
Аватар для r1x
r1x r1x вне форума
Начинающий
 
Регистрация: 15.07.2009
Адрес: KZ, Pavlodar
Сообщения: 110
Репутация: 10
По умолчанию

Вообщем я с этой фишкой разобрался, а если что надо будет
вот компонент:
TCABFILE.ZIP
__________________
[ iNewStar.Ru ] - Продам!
Вопросы в ПМ
Ответить с цитированием
  #4  
Старый 25.01.2010, 09:41
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

Я архивировал через rar.exe (консольный rar)
И с помощью функции ExecOSCommand передавал нужные параметры
сама функция:
Код:
function ExecOSCommand(
  CommandStr : string;
  Show : Integer;
  WaitForComplete,
  IsInternalCommand : Boolean
) : THandle;
var
  PTemp : array [0..100] of char;
  PCommand : array [0..1000] of char;

  SInfo : TStartupInfo;
  PInfo : TProcessInformation;
  tmpExitCode : DWORD;
begin
//
// Из переменных окружения вытягиваем имя командного процессора
//   и строим команду
//
  if IsInternalCommand then begin
    StrPCopy(PTemp, 'COMSPEC');
    GetEnvironmentVariable(PTemp, PCommand, SizeOf(PCommand));
    StrCat(PCommand, ' /C ');
    StrPCopy(PCommand + StrLen(PCommand), CommandStr);
  end
  else
    StrPCopy(PCommand, CommandStr);
//
// Исполняем команду
//
  FillChar(SInfo, SizeOf(SInfo), 0);
  SInfo.cb := SizeOf(SInfo);
  SInfo.dwFlags := STARTF_USESHOWWINDOW;
  SInfo.wShowWindow := Show;

  if not CreateProcess(nil, PCommand, nil, nil, FALSE,
    0, nil, nil, SInfo, PInfo) then
    raise ECitCmdNotStarted.Create('Невозможно выполнить команду ''' +
      CommandStr + '''');
  try
    if WaitForComplete then
    begin
      //
      // Ожидаем завершения
      //
      WaitForSingleObject(PInfo.hProcess, INFINITE);
      GetExitCodeProcess(PInfo.hProcess, tmpExitCode);

      if tmpExitCode <> 0 then
        raise ECitNonzeroExitCode.Create(' Команда ''' + CommandStr + ''''#10#13 +
                               ' имеет ошибочный код возврата :'+ IntToStr(tmpExitCode));
    end;
  finally
    //
    // Чистим за собой
    //
    CloseHandle(PInfo.hThread);
    CloseHandle(PInfo.hProcess);
  end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:09.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter