Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.06;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.004 c
4-17725
amamed_3071
2002-03-01 08:43
2002.05.06
Помагите с Attach -ом


1-17639
Дмитрий_Ч
2002-04-18 17:46
2002.05.06
Вопрос сложный, но и тут , я знаю люди не глупые.


7-17721
mormot
2002-02-05 05:15
2002.05.06
Печать на рулоне


3-17494
Programmer1
2002-04-12 14:38
2002.05.06
Сортировка по дате


1-17623
velk
2002-04-23 09:28
2002.05.06
Как программно создать базу данных Access с помощью Delphi





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