Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Rar Dll (https://www.delphipraxis.net/152970-rar-dll.html)

1234567890987654321 15. Jul 2010 08:15

Rar Dll
 
Guten morgen,
Ich würde gerne mein Programm eine .rar Datei entpacken lassen.
Habe dazu auch schon dieses,
und dieses
Touturial gefunden.
Wollte die Dll am Anfang erst mal statisch einbinden.
Aber wenn ich diesen Code anwende:
Delphi-Quellcode:
function RAROpenArchive(ArchiveData: PRAROpenArchiveData): THandle; stdcall;
external 'C:\urar.dll';

function RARProcessFile(hArcData: THandle; Operation: Integer; DestPath: PChar;
DestName: PChar): Integer; stdcall;
external 'C:\unrar.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
  h:=RAROpenArchive('c:\b.rar');
  RARProcessFile(h,RAR_EXTRACT,nil,nil);
end;
Kommt bei der Zeile:
function RAROpenArchive(ArchiveData: PRAROpenArchiveData):
der Fehler
unit1.pas(31,57) Error: Identifier not found "PRAROpenArchiveData"
ud hier:
RARProcessFile(h,RAR_EXTRACT,nil,nil);,
dass: unit1.pas(43,31) Error: Identifier not found "RAR_EXTRACT"

Hier einmal alle Fehlermeldungen(jetzt sind auch Bemerkungen dabei)
unit1.pas(31,57) Error: Identifier not found "PRAROpenArchiveData"
unit1.pas(42,31) Error: Incompatible type for arg no. 1: Got "Constant String", expected "<erroneous type>"
unit1.pas(31,10) Hint: Found declaration: RAROpenArchive(<erroneous type>):DWord; StdCall;
unit1.pas(43,31) Error: Identifier not found "RAR_EXTRACT"
unit1.pas(51) Fatal: There were 3 errors compiling module, stopping


Kann mir jemand helfen, bzw. ein klleines Stückchen Code geben?
Danke schonmal für eure Antworten

gsh 15. Jul 2010 08:41

AW: Rar Dll
 
http://www.koders.com/delphi/fidF893...7C7393EBE.aspx

Für Lazurus musst du vielleicht noch ein paar Anpassungen machen

GPRSNerd 15. Jul 2010 08:41

AW: Rar Dll
 
Der Schreibfehler für den DLL-Namen in genau dieser Zeile ist dir aufgefallen?
Solle UNRAR.DLL und nicht URAR.DLL lauten...

Delphi-Quellcode:
function RAROpenArchive(ArchiveData: PRAROpenArchiveData): THandle; stdcall;
external 'C:\urar.dll';

mkinzler 15. Jul 2010 08:42

AW: Rar Dll
 
Aber du darfst auch bei Lazarus-Code gerne den Delphi-Tag nehmen!

1234567890987654321 15. Jul 2010 08:44

AW: Rar Dll
 
Danke, der ist aber öeider nicht mal entscheident,
es kommt wegen der Fehler gar nich erst zur ausführung:(

P.S. Sorry vllt. kans jemand noch vreschieben?

gsh 15. Jul 2010 08:47

AW: Rar Dll
 
Zitat:

Zitat von 1234567890987654321 (Beitrag 1035394)
Danke, der ist aber öeider nicht mal entscheident,
es kommt wegen der Fehler gar nich erst zur ausführung:(

Klar weil dir die Deklarationen von den Konstanten und den Records fehlen.
Schau dir mal meinen Link an den ich oben gepostet hab.

himitsu 15. Jul 2010 08:53

AW: Rar Dll
 
Und den absoluten Pfad anzugeben ist auch nicht sonderlich gut.
(abgesehn davon, daß solche DLLs nicht nach C:\ gehören)

Ohne Pfad
Delphi-Quellcode:
... external 'urar.dll';
sollte ausreichen
das System sucht sich dann die DLL in den allgemein gültigen Verzeichnissen (Programmverzeichnis, Windos/System32 und andere global registrierte Pfade/%PATH% )

hoika 15. Jul 2010 08:59

AW: Rar Dll
 
Hallo,

da in der unrar.pas kein PRAROpenArchiveData definiert ist,
würde ich es so machen

Delphi-Quellcode:
function RAROpenArchive(var ArchiveData: TRAROpenArchiveData) XXX
oder du ergänzt die pas-Datei

Delphi-Quellcode:
PRAROpenArchiveData = ^TRAROpenArchiveData;
TRAROpenArchiveData = packed record


Heiko

1234567890987654321 15. Jul 2010 09:00

AW: Rar Dll
 
Lazarus kommt mit den @ nicht klar:
unit1.pas(168,14) Error: Incompatible types: got "<procedure variable type of function:LongInt;StdCall>" expected "LongInt"
unit1.pas(183,7) Error: Can't assign values to an address
unit1.pas(184,7) Error: Can't assign values to an address
unit1.pas(185,7) Error: Can't assign values to an address
unit1.pas(186,7) Error: Can't assign values to an address
unit1.pas(187,7) Error: Can't assign values to an address
unit1.pas(188,7) Error: Can't assign values to an address
unit1.pas(189,7) Error: Can't assign values to an address
unit1.pas(190,7) Error: Can't assign values to an address
unit1.pas(191,7) Error: Can't assign values to an address
unit1.pas(219,31) Error: Incompatible types: got "Constant String" expected "TRAROpenArchiveData"
unit1.pas(228) Fatal: There were 13 errors compiling module, stopping

1234567890987654321 15. Jul 2010 09:17

AW: Rar Dll
 
Und noch eine Frage:
Wie entpacke ich mit der unrar.pas?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz