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

Вниз

Компонент TDFUnRar кто-то использовал ?   Найти похожие ветки 

 
$Инъектор   (2006-01-17 11:48) [0]

Кто юзал компонент TDFunRar - кинте какойто пример.
В readme.txt список функций (конкретно никакого примера).

(Я скопировал unrar.dll в каталог с программой, добавил компоненты на форму).

Например в  результате сл. действий ничего не происходит.

procedure TForm1.Button1Click(Sender: TObject);
begin
dfunrar1.FileName:="d:\archiv.rar";
dfunrar1.Extract;
end;


Никаких функций -- куда распаковывать и получить коды ошибок (если такие были не происходит, то есть в исходниках опис. ошибки но как их "взять" ?). Как просто распаковать архив ?


 
$Инъектор   (2006-01-17 13:31) [1]

Этот модуль взятый из FAQ (работа c rar, исп. unrar.dll). Почему выдаются ошибки ?  Я его засунул в своё приложение. Ошибки выделены жирным цветом.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DFUnRar, StdCtrls, ComCtrls;

function RAROpenArchive(ArchiveData : Pointer): Integer; stdcall;
external "unrar.dll" name "RAROpenArchive";

function RARCloseArchive(hArcData : Integer): Integer; stdcall;
external "unrar.dll" name "RARCloseArchive";

function RARReadHeader(hArcData : Integer; HeaderData : Pointer):
Integer; stdcall;
external "unrar.dll" name "RARReadHeader";

function RARProcessFile(hArcData : Integer; Operation : Integer;
DestPath : Pointer; DestName : Pointer): Integer; stdcall;
external "unrar.dll" name "RARProcessFile";

 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;

type
 TForm1 = class(TForm)
   Button1: TButton;
   ProgressBar1: TProgressBar;
   ProgressBar2: TProgressBar;
   procedure ExtractRARArchive;

 private
   { Private declarations }
 public
   { Public declarations }
 end;

 Char260 = array [1..260] of Char;

 TRAROpenArchiveData = record
   ArcName : PChar; // a C++ yoi aoaao auaeyaaou eae: char *ArcName
   OpenMode : Cardinal;
   OpenResult : Cardinal;
   CmtBuf : PChar;
   CmtBufSize : Cardinal;
   CmtSize : Cardinal;
   CmtState : Cardinal;
 end;

 TRARHeaderData = record
   ArcName : Char260;
   FileName : Char260;
   Flags : Cardinal;
   PackSize : Cardinal;
   UnpSize : Cardinal;
   HostOS : Cardinal;
   FileCRC : Cardinal;
   FileTime : Cardinal;
   UnpVer : Cardinal;
   Method : Cardinal;
   FileAttr : Cardinal;
   CmtBuf : PChar;
   CmtBufSize : Cardinal;
   CmtSize : Cardinal;
   CmtState : Cardinal;
 end;

var
 Form1: TForm1;
 RARExtract : boolean;
 RAROpenArchiveData : TRAROpenArchiveData;
 RARComment : array [1..256] of Char;
 RARHeaderData : TRARHeaderData;

implementation

{$R *.dfm}

procedure tform1.ExtractRARArchive;

var
 sDir : string;
 s : string;
 sTest : string;
 iTest : integer;
 bTestDone : boolean;
 RARhnd : Integer;
 RARrc : Integer;
 PDestPath : Char260;

begin
ProgressBar1.Position:=50;
 RARExtract:=TRUE;
 lKBWritten:=0;
 ProgressBar2.Position := 0;
ProgressBar2.Max := lTotalSize;
 RARStartTime:=Time;

 RAROpenArchiveData.OpenResult:=99;
 RAROpenArchiveData.OpenMode := RAR_OM_EXTRACT; // ioe?uaaai aey ?aniaeiaee
 RAROpenArchiveData.ArcName:= @RARFileName;
 RAROpenArchiveData.CmtBuf := @RARComment;
 RAROpenArchiveData.CmtBufSize := 255;

 // Ioe?uaaai RAR a?oea e auaaeyai iaiyou
 RARhnd := RAROpenArchive (@RAROpenArchiveData);
 if RAROpenArchiveData.OpenResult <> 0 then
 begin
   case RAROpenArchiveData.OpenResult of
     ERAR_NO_MEMORY   : s:="Not enough memory to initialize data structures";
     ERAR_BAD_DATA    : s:="Archive header broken";
     ERAR_BAD_ARCHIVE : s:="File is not valid RAR archive";
     ERAR_EOPEN       : s:="File open error";
   end;
   MessageDlg("Unable to open rar archive: " + s + "!",mtError, [mbOK], 0);
 end;

 RARSetProcessDataProc(RARhnd,@Form.OnRarStatus);
 StrPCopy(@PDestPath, EInstallPath.Text);

 repeat
   RARrc := RARReadHeader (RARhnd, @RARHeaderData);// ?eoaai caaieiaie
   if RARrc <> ERAR_END_ARCHIVE then
   begin
     ProgressBar1.Position := 0;
     ProgressBar1.Max := RARHeaderData.UnpSize;
     s:=RARHeaderData.FileName;
     lblCurrentFile.Caption := s;
     lKBytesDone := 0;
   end;

   if RARrc = 0 then
     RARrc:=RARProcessFile (RARhnd, RAR_EXTRACT, @PDestPath, nil);
   if (RARrc <> 0) and (RARrc <> ERAR_END_ARCHIVE) then
   begin
     MessageDlg("An Error occured during extracting of " + sTest+"!" + #13#10 +
     "RARProcessFile: " + MakeItAString(RARrc),mtError, [mbOK], 0);
   end;
 until
   RARrc <> 0;

 // cae?uaaai RAR a?oea e inaiai?aaai iaiyou
 if RARCloseArchive(RARhnd) <> 0 then
 begin
   MessageDlg("Unable to close rar archive!",mtError, [mbOK], 0);
 end;
end;

end.



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

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

Наверх




Память: 0.47 MB
Время: 0.052 c
2-1138819097
pathfinder
2006-02-01 21:38
2006.02.19
Как в ADOQuery можно узнать число полученных записей?


9-1125021011
Slavikk
2005-08-26 05:50
2006.02.19
Эфект картинки как в Brothers In Arms (OGL)


2-1138659346
einstein
2006-01-31 01:15
2006.02.19
Как регулировать громкость?


2-1138739534
MIXER
2006-01-31 23:32
2006.02.19
строки ---Edit


15-1138284048
DelphiMangler
2006-01-26 17:00
2006.02.19
Откомпилировать C-файлы и H-файлы





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