Einzelnen Beitrag anzeigen

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, 14: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