Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ENtpacken von .rar (https://www.delphipraxis.net/132532-entpacken-von-rar.html)

Phil125 14. Apr 2009 23:08


ENtpacken von .rar
 
Hallo ich bin ein absolut blutiger Anfänger in delphi und fange gerade erst an.



Was ich wissen möchte wie entpacke ich ein .rar-Archiv.

Beim suchen bin ich auch schon auf folgende komponnte gestoßen:
http://www.delphipraxis.net/internal...=rar+entpacken

Wie ich diese jedoch richtig bediene ist mir nicht bekannt.

Wichtig wäre noch das es beim entpacken vorhanden Dateien (ohne Schreibschutz) überschreibt.

Es wäre toll wenn mir jemand helfen könnte !!!!!

fkerber 14. Apr 2009 23:25

Re: ENtpacken von .rar
 
Hi!

Herzlich Willkommen in der DP!!!

Sicher, dass die richtige Sprache C++ ist?
Falls nicht, kannst du das durch die Edit-Schaltfläche innerhalb von 24h nochmal ändern...


Ciao, Frederic

Phil125 15. Apr 2009 09:21

Re: ENtpacken von .rar
 
Nein da hab ich mich wohl verklickt tut mir leid.

Phil125 17. Apr 2009 07:18

Re: ENtpacken von .rar
 
Es wäre hilfreich wenn mir nur jemand sagen würde wie ich die komponente installiere.

Matze 17. Apr 2009 07:30

Re: ENtpacken von .rar
 
Zitat:

Zitat von Phil125
Es wäre hilfreich wenn mir nur jemand sagen würde wie ich die komponente installiere.

Es wäre hilfreich, wenn du dir die Documentation.pdf durchlesen würdest, die sich im heruntergeladenen Archiv befindet. Da steht alles drinnen, von der Installation bis hin zur Verwendung.

DP-Maintenance 17. Apr 2009 07:35

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "VCL / WinForms / Controls" nach "Sonstige Fragen zu Delphi" verschoben.
Keine Frage zur VCL.

Phil125 17. Apr 2009 08:11

Re: ENtpacken von .rar
 
Danke hab ich gar nicht gesehen :oops:

OK installiert habe ichs wenn ich nun allerdings den Befehl

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
 RAR.OpenFile('archiv.rar');
end;
benutze bekomme ich den error

Undeklarierter Bezeichner: 'OpenFile'


was mache ich falsch muss ich etwas in die uses einfügen ?

_frank_ 17. Apr 2009 23:55

Re: ENtpacken von .rar
 
als was ist denn RAR deklariert und danach,wenns eine Klasse ist: wurde das Objekt schon erzeugt? sonst hagelts ne AV :D

Gruß Frank

jaenicke 18. Apr 2009 05:06

Re: ENtpacken von .rar
 
Ich gehe davon aus, dass deine Komponente RAR heißt?
Es ist auch keine gute Idee eine Komponente genauso zu nennen wie die Unit, in der sie deklariert ist... :roll:
Benenne die Komponente richtig, oder lass zumindest den Standardnamen (RAR1 vermutlich) stehen, dann klappt das.

So denkt Delphi vermutlich, dass du die Unit RAR meinst, und dadrin gibts kein OpenFile...

Phil125 18. Apr 2009 12:55

Re: ENtpacken von .rar
 
Wenn mir jemand einfach den code zum entpacken geben könnte wäre es geil

Ich möchte "archiv.rar" in den Ordner "dateien" entpacken
der Ordner ist im selben Ordner wie die Applikation

Ich hatte es jetzt mit
Delphi-Quellcode:
TRAR.Extract('archiv.rar');
probiert bekomme aber den Fehler:
Nicht genügend wirkliche Parameter.


Bitte Ich brauche HIIIILFFEEEE

_frank_ 18. Apr 2009 13:20

Re: ENtpacken von .rar
 
ohne zu testen nur anhand der doku:

Delphi-Quellcode:
uses rar; //rar-unit einbinden
var rarfiile:TRar;
begin
  rarfile:=TRar.create(self); //Objekt erstellen
  rarfile.OpenFile('C:\test.rar'); //Archiv öffnen
  rarfile.Extract('C:\temp\',true,nil); //entpacken
  rarfile.free;//objekt freigeben
end;
//tipfehler korrigiert ;)

HTH Frank

Phil125 18. Apr 2009 14:02

Re: ENtpacken von .rar
 
Bis auf einen kleinen Tippfehler suuuuuuuper danke man du hast mich gerettet

whiteF 30. Apr 2011 00:23

AW: ENtpacken von .rar
 
hi, das thema ist zwar etwa angestaubt, aber ich versuchs dennoch^^ (habe Delphi XE)

eigentlich ist diese komponente ja ziemlich einfach und schlicht, aber irgendwie komm ich da nicht weiter...

ich habe jetzt folgendes:
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
RAR1:=RAR1.create(self); //Objekt erstellen
if OpenDialog1.Execute then begin
showmessage(OpenDialog1.FileName);
      if RAR1.OpenFile(OpenDialog1.FileName) then begin
         showmessage(BoolToStr(RAR1.OpenFile(OpenDialog1.FileName)));
end;
showmessage('Nach if:' + BoolToStr(RAR1.OpenFile(OpenDialog1.FileName)));
end;
RAR1.free;
end;
Lt. der Doku der Unit müsste Rar1.openfile einen Boolwert zurückgeben (wenn alles glatt läuft mit dem archiv).
Mir wird hier: showmessage(BoolToStr(RAR1.OpenFile(OpenDialog1.Fi leName)));
der Wert 0 zurück geliefert.
Wenn ich diesen kleinen showmessage-test in die demo der unit einbaue, kommt wie in der doku beschrieben der wert TRUE.
der aufbau der demo, weicht eigentlich außer ein paar befehle zum listbox adden nicht ab.

woran könnte das denn liegen?
in der uses ist "rar" vorhanden, genauso wie type RAR1: TRAR;

mfg

sx2008 30. Apr 2011 00:43

AW: ENtpacken von .rar
 
Du rufst RAR1.OpenFile(OpenDialog1.FileName) zweimal auf.
Das wäre so wie wenn du deine Haustür zweimal aufschliesen würdest und beim zweiten Mal lässt sich der Schlüssel nicht mehr drehen.
In Delphi kann man ja lokale Variablen anlegen und man sollte davon auch regen Gebrauch machen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  opened : Boolean;
  filename : string;
begin
  if not OpenDialog1.Execute then
    Exit;
  filename := OpenDialog1.FileName;

  RAR1:=RAR1.create(self); //Komponente erstellen
  try
    opened := RAR1.OpenFile(filename);
    if not opened then
      ShowMessageFmt('Archiv %s konnte nicht geöffnet werden', [filename]);
    else
      ShowMessageFmt('Archiv %s geöffnet', [filename]);

  finally
    FreeAndNil(RAR1);
  end;
end;

Aphton 30. Apr 2011 00:52

AW: ENtpacken von .rar
 
die Zeile hier ist vermutlich auch falsch
Delphi-Quellcode:
RAR1:=RAR1.create(self);
//----^
("vermutlich", weil... für den Fall, dass du ne eigene Klasse mit dem Namen "RAR1" geschrieben hast, die von TRar erbt und dich nicht an die Konvention mit "T" gehalten hast!)

whiteF 30. Apr 2011 01:09

AW: ENtpacken von .rar
 
das ging aber schnell....
danke für die raschen antworten,
aber leider bekomm ich mit sx2008's lösung nur "dass das archiv nicht geöffnet werden kann"
dass ich 2 mal die Haustür aufschließe stimmt so nicht ganz, "if RAR1.OpenFile(OpenDialog1.FileName) then begin" wird ja gar nicht ausgelöst... das ist ja das problem! (Ergebnis ist ja 0 und nicht TRUE)

rar1.create brauch ich nicht, hast recht, hab ja schon die komponente auf der Form.^^
Habs aus verzweiflung mal mit ausprobiert gehabt.

hab jetzt mal das ausprobiert....

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var filepath : string;
begin
if OpenDialog1.Execute then begin
filepath := OpenDialog1.FileName;
showmessage(filepath);
      if RAR1.OpenFile(filepath) then begin
         showmessage(BoolToStr(RAR1.OpenFile(filepath)));
end;
showmessage('Nach if:' + BoolToStr(RAR1.OpenFile(filepath)));
end;
RAR1.free;
end;
filepath = OpenDialog1.FileName wird auch korrekt wiedergegeben (bei mir: "C:\1\b.rar" das muss doch so stimmen :cry:)

ich raffs einfach nicht^^ die demo läuft doch auch :roll:

habt ihr Delphi XE und auch diese komponente "UnRAR Delphi component - Delphi component wrapper for UnRar.dll by Philippe Wechsler." ?

pixfreak 30. Apr 2011 08:03

AW: ENtpacken von .rar
 
Moin und ganz ruhig....

Du bekommst die Meldung 0 zurück, und ich denke, es ist ok.

Delphi-Quellcode:
if RAR1.OpenFile(OpenDialog1.FileName) then begin

         showmessage(BoolToStr(RAR1.OpenFile(OpenDialog1.FileName)));
Ich hab Dir mal eine Leerzeile in Deinen Code eingefügt. Vielleicht wird es jetzt schon klarer...

Was passiert: In der ersten Zeile öffnest Du mit dem RAR1 Objekt mit OpenFile eine Datei. Dieser Befehl hat Erfolg, denn er liefert Dir true zurück. Und genau dann wenn die if Bedingung wahr ist, also true, wird der Befehl hinter then ausgeführt (hier Dein begin - end Block). Und dort öffnest Du zum zweiten mal eine Datei, obwohl noch eine offen ist, und das gibt diesmal false bzw. 0 und die Message Box wird angezeigt.

Mach doch mal folgendes:

Delphi-Quellcode:
if RAR1.OpenFile(OpenDialog1.FileName) then
   ShowMessage("Erfolg!")
else
   ShowMessage("Fehler!");

Ich hoffe, ich konnte helfen...


VG Pixfreak

whiteF 30. Apr 2011 09:22

AW: ENtpacken von .rar
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var filepath : string;
begin
if OpenDialog1.Execute then begin
filepath := OpenDialog1.FileName;
showmessage(filepath);
      if RAR1.OpenFile(filepath) then
      ShowMessage('Erfolg!')
      else
      ShowMessage('Fehler!');
end;
RAR1.free;
end;
= Fehler


auch nur das hier gibt mir 0 zurück
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(BoolToStr(RAR1.OpenFile('C:\1\b.rar')));
RAR1.free;
end;
= 0

pixfreak 30. Apr 2011 14:29

AW: ENtpacken von .rar
 
Ohne die Komponente zu kennen. Hat die vielleicht ein Error Property wo man mehr über den misslungenen Versuch erfahren kann?

Zugriffsrechte auf das Verzeichnis?


VG Pixfreak


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 Uhr.

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