Hallo Mathias,
ich kenne Abbrevia nicht, aber für mich erscheint das Ganze nur dann logisch, wenn "AddFiles" in der Schleife aufgerufen wird. "CloseArchive" schreibt vermutlich das Archiv auf die Festplatte (wie bei CloseFile) und damit überschreibst du das Archiv ständig.
Versuche also, nur "AddFiles" in deiner For-Schleife aufzurufen
Delphi-Quellcode:
AbMakeCab1.OpenArchive(cabs);
for i := 0 to OpenDialog2.Files.Count - 1 do
begin
AbMakeCab1.AddFiles(OpenDialog2.Files[i], 0);
end;
AbMakeCab1.CloseArchive;
Aber das ist nur eine Vermutung.
Ich denke auch, dass du der Methode "AddFiles" einen absoluten Dateipfad übergeben solltest. Relative Pfade sind immer kritisch, da du nie weißt, auf welches Verzeichnis sie sich beziehen (siehe meinen Beispielcode).
Grüße
Matthias
Nachtrag: Ich liege übrigens richtig, wie die Beispiele von Abbrevia zeigen:
Delphi-Quellcode:
// Quelle: /examples/MakeCab1.pas
if OpenDialog1.Execute then
if (OpenDialog1.Files.Count > 0) then begin
// ...
FileList := TStringList.Create;
try
FileList.Assign(OpenDialog1.Files);
for i := 0 to Pred(FileList.Count) do
AbMakeCab1.AddFiles(FileList.Strings[i], 0);
finally
FileList.Free;
end;
// ...
end;
Mein Code von oben müsste auch funktionieren.