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

Вниз

Доброго времени суток, знатоки. Не подскажете ли ламеру ответ на   Найти похожие ветки 

 
allrussia   (2002-04-22 21:03) [0]

Доброго времени суток, знатоки. Не подскажете ли ламеру ответ на один вопрос?

Есть такой юнит, я его прописываю в uses своего проекта и хочу его использовать. Нужно, чтобы при нажатии на кнопку Button1 распаковывался архив (полностью, все файлы), и прогресс бар показывал текущее состояние распаковки, т.е. ВСЕГО 2 ФУНКЦИИ. Но так как я не бум-бум в нижеследующем, то прошу совета у вас. Заранее спасибо.

unit UnRAR;

{$ALIGN OFF}

interface

uses Windows;

const
ERAR_END_ARCHIVE = 10;
ERAR_NO_MEMORY = 11;
ERAR_BAD_DATA = 12;
ERAR_BAD_ARCHIVE = 13;
ERAR_UNKNOWN_FORMAT = 14;
ERAR_EOPEN = 15;
ERAR_ECREATE = 16;
ERAR_ECLOSE = 17;
ERAR_EREAD = 18;
ERAR_EWRITE = 19;
ERAR_SMALL_BUF = 20;

RAR_OM_LIST = 0;
RAR_OM_EXTRACT = 1;

RAR_SKIP = 0;
RAR_TEST = 1;
RAR_EXTRACT = 2;

RAR_VOL_ASK = 0;
RAR_VOL_NOTIFY = 1;

RAR_DLL_VERSION = 2;

UCM_CHANGEVOLUME = 0;
UCM_PROCESSDATA = 1;
UCM_NEEDPASSWORD = 2;

type
RARHeaderData = record
ArcName,
FileName: array[0..Pred(260)] of Char;
Flags,
PackSize,
UnpSize,
HostOS,
FileCRC,
FileTime,
UnpVer,
Method,
FileAttr: UINT;
CmtBuf: PChar;
CmtBufSize,
CmtSize,
CmtState: UINT;
end;

RAROpenArchiveData = record
ArcName: PChar;
OpenMode,
OpenResult: UINT;
CmtBuf: PChar;
CmtBufSize,
CmtSize,
CmtState: UINT;
end;

TUnrarCallback = function (Msg: UINT; UserData, P1, P2: Integer) :Integer; stdcall;

const
_unrar = "unrar.dll";

function RAROpenArchive(var ArchiveData: RAROpenArchiveData): THandle;
stdcall; external _unrar;
function RARCloseArchive(hArcData: THandle): Integer;
stdcall; external _unrar;
function RARReadHeader(hArcData: THandle; var HeaderData: RARHeaderData): Integer;
stdcall; external _unrar;
function RARProcessFile(hArcData: THandle; Operation: Integer; DestPath, DestName: PChar): Integer;
stdcall; external _unrar;
procedure RARSetCallback(hArcData: THandle; UnrarCallback: TUnrarCallback; UserData:Integer);
stdcall; external _unrar;
procedure RARSetPassword(hArcData: THandle; Password: PChar);
stdcall; external _unrar;

function RARGetDllVersion: integer;

type
TChangeVolProc = function(ArcName: PChar; Mode: Integer): Integer; stdcall;
TProcessDataProc = function(Addr: PUChar; Size: Integer): Integer; stdcall;

procedure RARSetChangeVolProc(hArcData: THandle; ChangeVolProc: TChangeVolProc);
stdcall; external _unrar;
procedure RARSetProcessDataProc(hArcData: THandle; ProcessDataProc: TProcessDataProc);
stdcall; external _unrar;

implementation

type
TRARGetDllVersion = function: integer; stdcall;

function RARGetDllVersion: integer;
var
h: THandle;
f: TRARGetDllVersion;
begin
h:= LoadLibrary(_unrar);
if h=0 then begin Result:= -1; Exit end;
f:= GetProcAddress(h, "RARGetDllVersion");
if @f=nil then Result:= 0 else Result:= f;
FreeLibrary(h);
end;

end.


 
Song   (2002-04-22 22:05) [1]

А запустить через TShellExcuteInfo никак?


 
allrussia   (2002-04-22 22:46) [2]

Если с помощью TShellExcuteInfo можно использовать unrar.dll (а не WinRAR/UnRAR.EXE), то как?


 
Song   (2002-04-23 08:15) [3]

Нет. Через ShellExecute можно запустить архиватор с нужными Вам ключами.
В Вашем вариате прогресс бар не сделаешь, потому что его изменение нужно вставлять в сам unrar.dll



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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
14-17680
-=CrazyFish=-
2002-03-26 15:09
2002.05.06
АОН


7-17711
davile
2002-02-09 15:26
2002.05.06
COM порт


1-17518
PaRL
2002-04-23 14:55
2002.05.06
TChart(не заню в который раз :) )


1-17607
SergeySh
2002-04-22 16:31
2002.05.06
Как отловить создание MDIChild окна?


1-17618
Evgeny
2002-04-20 09:04
2002.05.06
многоугольник





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский