AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ENtpacken von .rar

Ein Thema von Phil125 · begonnen am 15. Apr 2009 · letzter Beitrag vom 30. Apr 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#11

Re: ENtpacken von .rar

  Alt 18. Apr 2009, 14:20
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
  Mit Zitat antworten Zitat
Phil125

Registriert seit: 14. Apr 2009
16 Beiträge
 
#12

Re: ENtpacken von .rar

  Alt 18. Apr 2009, 15:02
Bis auf einen kleinen Tippfehler suuuuuuuper danke man du hast mich gerettet
  Mit Zitat antworten Zitat
whiteF

Registriert seit: 14. Okt 2008
45 Beiträge
 
#13

AW: ENtpacken von .rar

  Alt 30. Apr 2011, 01:23
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
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#14

AW: ENtpacken von .rar

  Alt 30. Apr 2011, 01:43
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;
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#15

AW: ENtpacken von .rar

  Alt 30. Apr 2011, 01:52
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!)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
whiteF

Registriert seit: 14. Okt 2008
45 Beiträge
 
#16

AW: ENtpacken von .rar

  Alt 30. Apr 2011, 02:09
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 )

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

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

Registriert seit: 6. Jul 2007
112 Beiträge
 
Delphi XE3 Professional
 
#17

AW: ENtpacken von .rar

  Alt 30. Apr 2011, 09:03
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
... und noch nen C++ Builder XE2

Geändert von pixfreak (30. Apr 2011 um 09:04 Uhr) Grund: zu früh abgesendet...
  Mit Zitat antworten Zitat
whiteF

Registriert seit: 14. Okt 2008
45 Beiträge
 
#18

AW: ENtpacken von .rar

  Alt 30. Apr 2011, 10:22
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
  Mit Zitat antworten Zitat
pixfreak

Registriert seit: 6. Jul 2007
112 Beiträge
 
Delphi XE3 Professional
 
#19

AW: ENtpacken von .rar

  Alt 30. Apr 2011, 15:29
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
... und noch nen C++ Builder XE2
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:04 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