Главная страница
    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.039 c
4-1133252484
*Pavel
2005-11-29 11:21
2006.02.19
Развернуть чужое окно


15-1138354595
Gbp
2006-01-27 12:36
2006.02.19
Нужен Delphi программист для выполнения разовой работы.


1-1136990344
DelphiLexx
2006-01-11 17:39
2006.02.19
Сохранить рисунок с TPanel


15-1138734071
Цукор5
2006-01-31 22:01
2006.02.19
MAC


10-1113541861
12345
2005-04-15 09:11
2006.02.19
Связь м/у CoInitializeEx и OpenDialog?





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