AGB  ·  Datenschutz  ·  Impressum  







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

Mit Rar packen per Datei-Liste

Ein Thema von nachtstreuner · begonnen am 26. Apr 2012 · letzter Beitrag vom 27. Apr 2012
Antwort Antwort
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#1

Mit Rar packen per Datei-Liste

  Alt 26. Apr 2012, 13:28
Delphi-Version: XE2
Hallo Delphianer,

ich benutze in meinem Programm die RAR.EXE um Dateien und Verzeichnisse zu packen.
Sobald ich aber mit einer Datei-Liste, welche ich an RAR übergeben möchte, packen will, so
wird nur die Datei-Liste selbst gepackt, aber nicht die darin enthaltenen Dateinamen, die gepackt werden sollen.

Auf DOS-EBENE funktioniert das einwandfrei : z.b. in der backup.lst befinden sich mehrere Dateinamen und ein Ordner
alles wird sauber gepackt.
Code:
C:\>rar a d:\test.rar @backup.lst
Nun wollte ich das in Delphi nachbilden :

Code:
  //*****************************************************************************
  // wenn als RAR gepackt werden soll, dann dies .....
  if DLS.PACK = 'RAR' then begin
     sLabel1.Visible := true;       // Bitte warten ---- anzeigen
     PATH       := ExtractFilePath(ParamStr(0));
     RarFilename := ini.ReadString('VERZ','tempSend','') + ZielTemp+'\'+EditPackName.Text;
     TempPath   := frmDLS.JamPathLabel_ZIEL.Path;
   
     // --------- Parameter für paramPack -------------------------------
     // a    : fügt die Dateien dem Archiv zu
     // - r  : rekursive Verzeichnissuche nach Dateien die hinzugefügt werden

     // - ep1 : Stammverzeichnis aus dem Namen entfernen
     // - df : Dateien nach dem archivieren löschen (optional)

     { ******  Datei-Liste zusammenstellen ********* }

     for X := 0 to frmDLS.ZIEL_O.Items.Count-1 do begin
         WriteDateien(frmDLS.ZIEL_O.Items[X].Caption);  // Dateiname oder Ordnername in backup.lst schreiben
     end;


//      paramPack := Format('a -r -ep1 -ms*.zip;*.rar;*.jpg "%s" "%s"', [RarFilename, TempPath]); // Dies funktioniert
        paramPack := Format('a "%s" @backup.lst', [RarFileName]);  // <<----------- hier liegt der Fehler

{     if Splitting = 100 then
        paramPack := Format('a -r -v100000k -ep1 -ms*.zip;*.rar;*.jpg "%s" "%s"', [RarFilename, TempPath]);
     if Splitting = 500 then
        paramPack := Format('a -r -v500000k -ep1 -ms*.zip;*.rar;*.jpg "%s" "%s"', [RarFilename, TempPath]);
     if Splitting = 1000 then
        paramPack := Format('a -r -v1000000k -ep1 -ms*.zip;*.rar;*.jpg "%s" "%s"', [RarFilename, TempPath]); }
     Application.ProcessMessages;

     ExecuteProgramm(PChar(PATH + '\rar.exe'),PChar(paramPACK));
Er öffnet also nicht die Datei : backup.lst um die dateinamen auszulesen, sondern packt die erstellte backup.lst ins Archiv

Ich denke mal, es liegt am Parameter @backup.lst
Alles wird gut -
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#2

AW: Mit Rar packen per Datei-Liste

  Alt 26. Apr 2012, 14:19
Was arbeitest du auch mit relativen Pfaden?
Da weiß man doch nie wo die Datei nun wirklich gesucht wird (aktuelles Arbeitsverzeichnis).


Bzw. stimmen denn die Pfadangaben alle?
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Apr 2012 um 14:21 Uhr)
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Mit Rar packen per Datei-Liste

  Alt 26. Apr 2012, 14:32
Hallo himitsu,

ja, die Pfade stimmen.

Die RAR.Exe liegt im Programmpfad.
Die backup.lst wird im Programmverzeichnis der Anwendung erzeugt.

Aber mir scheint, als wenn er mit dem RAR Parameter @backup.lst nicht klar kommt, bzw. diese textdatei nicht öffnet und ausliest
Alles wird gut -
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#4

AW: Mit Rar packen per Datei-Liste

  Alt 26. Apr 2012, 14:37
Und wenn Du die Datei mit absolutem Pfad übergibst?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Mit Rar packen per Datei-Liste

  Alt 26. Apr 2012, 14:52
Hallo DeddyH,

danke für den Hinweis. Ich habe auch schon folgendes probiert,

'a c:\test.rar @c:\backup.lst'

hat aber auch nichts gebracht, die backup.lst wird nicht ausgelesen.

Auf Dosebene funktioniert es aber so:

rar a c:\test.rar @c:\backup.lst
Alles wird gut -
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#6

AW: Mit Rar packen per Datei-Liste

  Alt 26. Apr 2012, 15:01
Hmm... langsam gehen mir die Ideen aus, ich bin schon fast versucht, mal übern Berg zu fahren *g*.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz