Главная страница
    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.01 c
1-17599
Reticent
2002-04-22 18:12
2002.05.06
Win Registry. Почему не работает? Помогите


1-17534
WBVido
2002-04-22 21:42
2002.05.06
Пожалуйста помогите!


1-17571
cypher
2002-04-21 22:42
2002.05.06
Как вставить TPicture в панель TStatusBarэ


4-17722
Jungerman
2002-03-01 00:16
2002.05.06
Как скрыть и показать курсор?


1-17559
Tpv
2002-04-22 09:26
2002.05.06
Открыть Word.





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